Avatar billede jmarkling Nybegynder
15. februar 2005 - 13:18 Der er 9 kommentarer og
1 løsning

FormsAuthentication på tværs af websteder

Jeg har to websteder, hvor jeg vil merge login teknikken, begge steder bruger FormsAuthentication og authorization, hvilket virker fint seperat på begge websteder.

******************************************************
Jeg vil godt kunne logge ind på det ene websted og hvis jeg der følges et link til det andet websted, så skal man være logget ind.
******************************************************

Logisk nok burde man vel ikke kunne dekryptere authenticaten cookien, i global.aspx som man plejder, selv om man kender navnet på cookien eller jeg har i hvertfald ikke kunne gøre det endnu... Er der noget jeg mangler at tage højde for ? For når jeg bliver redirected til login siden, når jeg går fra den ene til den anden siden, i henhold til den URL jeg har defineret i web.config filen...

Jeg har brugt følgende link den gang jeg lavede det i første omgang... http://support.microsoft.com/default.aspx?scid=kb;en-us;301240
(Siden ser skidt ud i andre browsere end IE)

Har forsøgt at bruge samme strong name til dll'erne på begge websteder... hjalp lige fedt.
Avatar billede jmarkling Nybegynder
15. februar 2005 - 13:20 #1
*Formulerings fejl...

For når jeg bliver redirected til login siden, når jeg går fra den ene til den anden siden, i henhold til den URL jeg har defineret i web.config filen..

*Jeg bliver red...
Avatar billede burningice Nybegynder
15. februar 2005 - 14:52 #2
hvis at dine websteder ligger under samme domæne burde det ikke være det store problem, der skal du bare sørge for at Domain-propertien på cookien bliver sat til dit domæne.
Avatar billede burningice Nybegynder
15. februar 2005 - 15:15 #4
nu er en ticket og en cookie heller ikke det samme

FormsAuthenticationTicket ticket = new FormsAuthenticationTicket(
        1,
        email,
        System.DateTime.Now,
        System.DateTime.Now.AddMinutes(30),
        isPersistent,
        userData,
        FormsAuthentication.FormsCookiePath);

      // Encrypt the ticket.
      string encTicket = FormsAuthentication.Encrypt(ticket);
   
      // Create the cookie.
    HttpCookie kage = new new HttpCookie(FormsAuthentication.FormsCookieName, encTicket);
        kage.Domain = "altfordamerne.dk";
   
      Response.Cookies.Add(kage);

      // Redirect back to original URL.
      Response.Redirect(FormsAuthentication.GetRedirectUrl(email,isPersistent));
Avatar billede jmarkling Nybegynder
15. februar 2005 - 15:33 #5
Misforstod vist dig... men det virker stadig ikke har lavet følgende funktion, webstederne kører under samme domæne, men i forskellige mapper...

www.url.dk/projekt1
www.url.dk/projekt2

Kodeuddrag:

public HttpCookie CreateCookie(string user, string role)
        {
            FormsAuthenticationTicket authTicket = new
                FormsAuthenticationTicket(1,                    //version
                                user,                            //user name
                                DateTime.Now,                    //creation
                                DateTime.Now.AddMinutes(60),    // Expiration
                                false,                            // Persistent
                                role );                        // User data
            //The ticket is encrypted
            string Enccookie = FormsAuthentication.Encrypt(authTicket);
            //Create a cookie
            HttpCookie authCookie = new 
            HttpCookie( FormsAuthentication.FormsCookieName, Enccookie );
            authCookie.Domain = "http://www.url.dk";
            //add the cookie to the outgoing cookie collection
            return authCookie;

        }
Avatar billede burningice Nybegynder
15. februar 2005 - 17:07 #6
prøv uden http://.. det er ikke en del af dit domæne:

public HttpCookie CreateCookie(string user, string role)
        {
            FormsAuthenticationTicket authTicket = new
                FormsAuthenticationTicket(1,                    //version
                                user,                            //user name
                                DateTime.Now,                    //creation
                                DateTime.Now.AddMinutes(60),    // Expiration
                                false,                            // Persistent
                                role );                        // User data
            //The ticket is encrypted
            string Enccookie = FormsAuthentication.Encrypt(authTicket);
            //Create a cookie
            HttpCookie authCookie = new
            HttpCookie( FormsAuthentication.FormsCookieName, Enccookie );
            authCookie.Domain = "www.url.dk";
            //add the cookie to the outgoing cookie collection
            return authCookie;

        }
Avatar billede jmarkling Nybegynder
15. februar 2005 - 17:35 #7
Virkede heller ikke... desværre...
Avatar billede burningice Nybegynder
15. februar 2005 - 22:21 #8
hm.. det skal virke. har selv lavet en løsning der bruger ovenstående fremgangsmåde, og hvis du søger på nettet udtaler udviklere fra microsoft også at FA kan bruges til login på tværs af domæner, så længe hoveddomænet er ens.

Der er faktisk også en artikkel på CodeProject der beskriver nøjagtig samme fremgangsmåde, så hvis det ikke virker for dig må der være noget andet der spiller ind.

http://www.thecodeproject.com/aspnet/aspnetsinglesignon.asp
Avatar billede jmarkling Nybegynder
16. februar 2005 - 10:35 #9
Så snart jeg havde defineret en machinkey web.config filen som beskrevet i ovenstående link virkede det...

Har lidt på fornemmelsen at machinekey'en ikke eksisterer på sever niveau som beskrevet i artiklen, men er unik pr. projekt/applikation på serveren...

Tak for hjælpen, smid et svar.

(Har lavet en anden key end den i artiklen)
Avatar billede burningice Nybegynder
16. februar 2005 - 11:02 #10
:) svar
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester