扩展现有(基于Azure的)ASP.NET表单身份验证应用程序以使用ADFS所需的标题步骤

问题描述 投票:0回答:1

我已经在Azure上部署了现有的ASP.NET应用。它具有自己的身份验证系统,本质上是一个u / p数据库表,并创建一个表单身份验证cookie:

    public void LogIn(LoginDetails userLogin, bool createPersistentCookie)
    {
        var info = (CustomPrincipalInfo) userLogin;
        var timeout = 30;

        if (createPersistentCookie)
            timeout = 60*24;

        var cookie = info.CreateAuthenticationCookie(DateTime.Now, timeout, createPersistentCookie);

        HttpContext.Current.Response.Cookies.Add(cookie);
    }

    public static HttpCookie CreateAuthenticationCookie(this CustomPrincipalInfo info, DateTime current, int timeout, bool remember)
    {
        var serializer = new JavaScriptSerializer();
        var userData = serializer.Serialize(info);
        var ticket = new FormsAuthenticationTicket(
            1, info.Email, current, current.AddMinutes(timeout), remember, userData);

        var secureTicket = FormsAuthentication.Encrypt(ticket);
        var cookie = new HttpCookie(FormsAuthentication.FormsCookieName, secureTicket) { Domain = FormsAuthentication.CookieDomain };
        if (remember)
            cookie.Expires = current.AddMinutes(timeout);
        return cookie;
    }

[大多数客户只是注册详细信息,向我们使用其详细信息登录,等等,但是我们被要求与使用ADFS进行SSO的客户集成。我对该主题的阅读表明,我们需要运行ADFS服务器,将我们的应用与其集成,然后参与建立其ADFS服务器与我们之间的信任的过程

我很好奇是否已知,因为它已经托管在Azure上,所以我们可以使用Azure / AAD跳过“运行ADFS服务器”部分,因为我们实际上没有任何基础架构可以做所以。该应用程序的启动例程是老式的Global.asax风格,使用Castle Windsor进行DI / IoC:

public class MvcApplication : HttpApplication
{
    protected void Application_Start()
    {
        DependencyRegistrar.Register();

        AreaRegistration.RegisterAllAreas();

        FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters);

        GlobalConfiguration.Configure(WebApiConfig.Register);
        RouteConfig.RegisterRoutes(RouteTable.Routes);

        InitializeInfrastructure();
        MigrateDatabaseSchema();

        DataAnnotationConfig.RegisterValidationAttributes();

        BundleConfig.RegisterBundles();
    }

我正在寻找的资源通常是较旧的东西:

  • ADFS with existing ASP.Net MVC App-这里提到a separate blog深入讨论服务器2012r2-我们确实有这样的sevrer,但希望将其淘汰,而不是添加继续使用它的其他原因/必须用较新的替换它一个

  • [Azure Websites SSO using ADFS带来了an azure sample,这似乎暗示Azure可以帮助我们避免运行专用的ADFS服务器,但是该示例已有9年的历史了]]]

  • The most recent one I found似乎是对我所遇到问题的合理描述,但我无法理解答案(基本上似乎是“阅读此链接,向下滚动一点”-阅读链接并没有给我带来麻烦面对任何明显的“这就是你要做的事情”)

Resources surrounding using ADFS on Azure似乎涉及很多;我不觉得我需要/想要/需要为负载均衡器,多个存储帐户,DMZ和代理等付费。这实际上是为了让一位客户的一个用户每月可以登录几次]]

[在该现有应用中创建一个非常基本的ADFS SSO身份验证机制需要采取哪些步骤,请了解如何为用户ID,以便当[email protected]出现并通过ADFS登录时,我可以知道登录的电子邮件地址,并像其他任何人一样向他提供他的表单身份验证cookie,并利用一些基于Azure的功能,这样我就不必运行ADFS服务器?

Gracias!

我已经在Azure上部署了现有的ASP.NET应用。它具有自己的身份验证系统,本质上是一个u / p数据库表,并创建一个表单身份验证cookie:public void LogIn(LoginDetails userLogin,bool ...

asp.net azure single-sign-on adfs
1个回答
0
投票

有两种方法可以做到这一点。

基本问题是您的凭据位于数据库中,而AAD和ADFS均不支持。

您可以在Azure中运行identityserver4并将idsrv4配置为针对数据库进行身份验证。然后,您可以将idsrv4与伙伴ADFS联合。

© www.soinside.com 2019 - 2024. All rights reserved.