2016-09-20 5 views
1

Является ли «традиционная» аутентификация формы и промежуточным программным обеспечением owin (с использованием UseCookieAuthentication) идеально взаимозаменяемыми?Аутентификация формы по сравнению с OWIN UseCookieAuthentication и субдомен SSO

Я хотел бы сделать простой поддомена SSO (как и многие другие примеры показывают) Sharing authentication between parent and child web applications

мой родитель приложение старое приложение asp.net веб-форму с помощью проверки подлинности форм сконфигурировано в web.config

<system.web> 
    <authentication mode="Forms"> 
     <forms loginUrl="~/Account/Login" timeout="2880" name=".ASPXAUTH" protection="Validation" domain="localhost" /> 
    </authentication> 
    <machineKey validationKey="E0230924313583BE9D071B5826165A7C6198A1697AE2F549535F0744FFDC414638882DDC507C7B097EAD5B4FB67819D9520D0A9D05B2D38EAB4AF0B36DAAA39F" decryptionKey="D29E22658319B16CAE17C9CD0269AB15DEAF9068FB6D459C" validation="SHA1" decryption="AES"></machineKey> 
</system.web> 

и приложение для ребенка (в подобласти), который является asp.net Mvc5 (с Owin UseCookieAuthentication), так что безопасность настроена в Startup.cs, а не в web.config

app.UseCookieAuthentication(new CookieAuthenticationOptions 
      { 
       AuthenticationType = DefaultAuthenticationTypes.ApplicationCookie, 
       CookieName = ".ASPXAUTH", 
       CookieDomain "localhost" 
       Provider = new CookieAuthenticationProvider { OnApplyRedirect = ApplyRedirect } 
      }); 

private static void ApplyRedirect(CookieApplyRedirectContext context) 
     { 
      Uri absoluteUri; 
      if (Uri.TryCreate(context.RedirectUri, UriKind.Absolute, out absoluteUri)) 
      { 
       var path = PathString.FromUriComponent(absoluteUri); 
       if (path == context.OwinContext.Request.PathBase + context.Options.LoginPath) 
        context.RedirectUri = "http://localhost/subSiteAuthenticationTest/Account/Login" + 
         new QueryString(
          context.Options.ReturnUrlParameter, 
          context.Request.Uri.AbsoluteUri); 
      } 

      context.Response.Redirect(context.RedirectUri); 
     } 

в прикладном ребенок web.config я настроен только один и тот же ключ машины для родительского приложения

<system.web> 
    <authentication mode="None"> 
    <machineKey validationKey="E0230924313583BE9D071B5826165A7C6198A1697AE2F549535F0744FFDC414638882DDC507C7B097EAD5B4FB67819D9520D0A9D05B2D38EAB4AF0B36DAAA39F" decryptionKey="D29E22658319B16CAE17C9CD0269AB15DEAF9068FB6D459C" validation="SHA1" decryption="AES"></machineKey> 
</system.web> 

Войти страница родителя используется как для применения (для того, чтобы использовать абсолютный путь для страницы входа в приложение chil i реализовало «OnApplyRedirect», поскольку этот пост говорит: Login page on different domain)

но это не работает, я пропустил что-нибудь?

ответ

2

Является ли «традиционная» аутентификация формы и промежуточным программным обеспечением owin (с использованием UseCookieAuthentication) идеально взаимозаменяемыми?

К сожалению, нет, они не взаимозаменяемы.

Вы можете, однако, предоставить пользовательский TicketDataFormat в CookieAuthenticationOptions.

Вот пример.

SSO for ASP.NET MVC4 and MVC5 web apps shared the same domain