我们有 ASP.NET 应用程序,该应用程序已经投入生产了4-5年。现在我正在尝试使用Azure AD,ASP.NET Identity & OWIN框架实现新的身份验证。 我们的应用程序用户还需要有权访问云应用"BOX",该应用已支持使用 Azure 的 SSO。所以想法是将我们的应用程序添加到 Azure AD 中并配置 SSO。
注意:我们在本地没有活动目录,我只想使用 Azure AD 进行 Web 应用身份验证。
像往常一样,在浏览了有关MSDN的大量文档后,我对应该使用哪种身份验证机制感到困惑。
第一种方法 - 基于此处
Microsoft文章我已使用 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 终极
版提供的模板在这里,当您使用VS 2013创建新应用程序并使用组织帐户选项配置身份验证时,它会添加以下应用程序设置'ida:FederationMetadataLocation', 'ida:Realm' 和 'ida:AudienceUri',然后添加代码以验证用户身份
问题
1> 我不确定应该使用哪种方法,有什么区别。
2>根据此处Microsoft视频,如果使用第二种方法创建应用程序,Visual Studio 将在 Azure AD 中为该租户创建应用程序。但它不再创造,最近有变化吗?我们是否始终必须在 Azure AD 中手动创建应用程序?
编辑1
当我在VS 2013中创建新的MVC或Web表单应用程序并配置身份验证时,有4个选项。其中 2 个是"个人帐户"和"组织帐户"。上面提到的方法 1 适用于"个人帐户",方法 2 适用于组织帐户。但是我仍然不知道什么时候应该使用一个而不是另一个?为什么一个使用客户端 ID 而另一个使用 restful API(联合元数据(?如果我希望同一用户能够访问多个云应用程序,我应该使用哪种方法?
很抱歉造成混乱。您正在经历的是随着技术的发展而对多个版本的分层。让我澄清几点。
- Visual Studio 2013 在 OWIN 中间件之前发布,用于 Web 签名上可用。因此,ASP.NET 项目模板仍然基于旧技术(Windows Identity Foundation(和旧协议(WS 联合(。
- VS2013 发布后,我们开发了新类(在快速入门文章中遇到过(,这些类通过更灵活的对象模型(OWIN 中间件(和更现代的协议(openid connect(支持 Web 登录。可以选择"手动"使用此类类(如快速入门中所述(,也可以使用 Visual Studio 2015 中的新模板 - 这些模板放弃了旧技术 (WIF( 并自动执行 a( 使用 OWIN 中间件生成项目 b( 在所选的 Azure AD 租户中预配一个条目。
- 通过选择个人帐户与"工作和学校"帐户,可以选择应用程序是逐个对用户进行身份验证(对于前者(并拥有所有用户的详细信息,还是希望应用将身份验证外包给用户来自的组织。如果要使用 Azure AD,则需要执行后者:身份验证由 Azure AD 完成,你只需将应用配置为在对用户进行身份验证时重定向到 Azure AD。
下面是所有 AzureAD 示例。https://github.com/azure-samples?query=active-directory
特别是这些 OIDC 示例应该会让您开始。如果您遇到困难,请告诉我。
https://github.com/Azure-Samples/active-directory-dotnet-webapp-openidconnecthttps://github.com/Azure-Samples/active-directory-dotnet-webapp-openidconnect-aspnet5