Azure AD 和 ASP.NET Identity + OWIN,使用哪种方法?

标签 azure asp.net-identity owin azure-active-directory

我们有 ASP.NET 应用程序,该应用程序已投入生产 4-5 年。现在我尝试使用 Azure AD、ASP.NET Identity 和 OWIN 框架实现新的身份验证。我们的应用程序用户还需要访问云应用程序“BOX”,它已经支持使用 Azure 的 SSO。所以想法是将我们的应用程序添加到 Azure AD 并配置 SSO。

注意:我们本地没有 Active Directory,我只想使用 Azure AD 进行 Web 应用程序身份验证。

像往常一样,在浏览了 MSDN 上的大量文档后,我很困惑应该使用哪种身份验证机制。

第一种方法 - 基于 Microsoft 文章 here
我已经使用 Nuget 配置了以下包

    PM> Install-Package Microsoft.Owin.Security.OpenIdConnect  
    PM> Install-Package Microsoft.Owin.Security.Cookies  
    PM> Install-Package Microsoft.Owin.Host.SystemWeb  

然后我在 Azure AD 中配置了应用程序,然后在 ASP.Net 应用程序中配置 'ida:ClientId''ida:Tenant''应用设置中的 ida:PostLogoutRedirectUri'。然后在启动时调用以下代码(并且还按照文章执行一些额外的步骤)

public void ConfigureAuth(IAppBuilder app)
{
    app.SetDefaultSignInAsAuthenticationType(CookieAuthenticationDefaults.AuthenticationType);

    app.UseCookieAuthentication(new CookieAuthenticationOptions());

    app.UseOpenIdConnectAuthentication(
        new OpenIdConnectAuthenticationOptions
        {
            ClientId = clientId,
            Authority = authority,
            PostLogoutRedirectUri = postLogoutRedirectUri,
        });
}

第二种方法 - 基于 VS 2013 Ultimate 提供的模板
在这里,当您使用 VS 2013 创建新应用程序并使用组织帐户选项配置身份验证时,它会添加以下应用程序设置 “ida:FederationMetadataLocation”、“ida:Realm”和“ida:AudienceUri”,然后添加代码来验证用户

问题
1> 我不确定应该使用哪种方法,有什么区别。
2> 根据微软视频 here如果使用第二种方法创建应用程序,Visual Studio 将在 Azure AD 中为该租户创建应用程序。但它不再创建了,这最近有改变吗?我们是否总是需要在 Azure AD 中手动创建应用程序?

编辑1
当我在 VS 2013 中创建新的 MVC 或 Web 表单应用程序并配置身份验证时,有 4 个选项。其中2个是“个人账户”和“组织账户”。上述方法一适用于“个人账户”,方法二适用于组织账户。但我仍然不知道什么时候应该使用其中一种而不是另一种?为什么一个使用客户端 ID 而另一个使用 Restful API(联合元数据)?如果我希望同一用户能够访问多个云应用程序,我应该使用哪种方法?

最佳答案

抱歉造成困惑。随着技术的发展,您所经历的是多个版本的分层。让我澄清几点。

  1. Visual Studio 2013 在用于 Web 签名的 OWIN 中间件之前发布 可用。因此,ASP.NET 项目模板 仍然基于旧技术(Windows Identity Foundation)并且 旧协议(protocol)(ws-federation)。
  2. VS2013 发布后,我们开发了新的类(您在快速入门文章中遇到过),它们支持通过更灵活的对象模型(OWIN 中间件)和更现代的协议(protocol)(openid connect)进行 Web 登录。您可以选择“手动”使用此类类,如快速入门中所述,也可以使用 Visual Studio 2015 中的新模板 - 放弃旧技术 (WIF) 并自动执行 a) 使用 OWIN 中间件生成项目 b)在您选择的 Azure AD 租户中为应用程序配置一个条目。
  3. 通过选择个人帐户与“工作和学校”帐户,您可以选择您的应用是否对用户进行一一身份验证(对于前者)并拥有所有用户的详细信息,或者是否希望您的应用将身份验证外包给组织您的用户来自哪里。如果您想使用 Azure AD,则需要执行后者:身份验证由 Azure AD 完成,您只需将应用程序配置为在对用户进行身份验证时重定向到 Azure AD。

关于Azure AD 和 ASP.NET Identity + OWIN,使用哪种方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35327626/

相关文章:

c# - Azure 上的 MongoDB : replSet can't get local. system.replset 配置

azure - 使用相同的PartitionKey和RowKey

asp.net-identity - 如何从 ASP.NET Identity Core 2.0 中删除与角色相关的表

azure - Azure 应用服务上带有 OWIN 'SystemWeb' 的 Web API 应用程序

Azure 应用服务 - 某些 WebAPI 方法引发 OWIN 异常

c# - 找不到类型或命名空间 IAppBuilder(缺少使用指令 pr 程序集引用)

azure - AKS 添加非 Azure 节点

azure - 模拟 TableClient DeleteEntityAsync - Azure.Response

asp.net-identity - 将 ASP.NET Identity 与负载平衡器一起使用

asp.net - 将密码哈希从 ASP.NET Identity 2.0 迁移到 3.0