【发布时间】:2016-02-10 22:55:50
【问题描述】:
我们有 ASP.NET 应用程序,该应用程序已经投入生产了 4-5 年。现在我尝试使用 Azure AD、ASP.NET Identity 和 OWIN 框架实现新的身份验证。我们的应用程序用户还需要访问已经支持使用 Azure 的 SSO 的云应用程序“BOX”。所以想法是将我们的应用程序添加到 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 创建新应用程序并使用组织帐户选项配置身份验证时,它会添加以下 appsettings
'ida:FederationMetadataLocation'、'ida:Realm' 和 'ida:AudienceUri' 然后添加验证用户的代码
问题
1> 我不确定我应该使用哪种方法,有什么区别。
2> 根据 Microsoft 视频here,如果您使用第二种方法创建应用程序,Visual Studio 将在 Azure AD 中为该租户创建应用程序。但是它不再创建了,最近有变化吗?我们是否总是需要在 Azure AD 中手动创建应用程序?
EDIT1
当我在 VS 2013 中创建新的 MVC 或 Web 窗体应用程序并配置身份验证时,有 4 个选项。其中 2 个是“个人账户”和“组织账户”。上述方法 1 适用于“个人帐户”,方法 2 适用于组织帐户。但是我仍然不知道什么时候应该使用一个而不是另一个?为什么一个使用客户端 ID 而另一个使用 restful API(联合元数据)?如果我希望同一个用户可以访问多个云应用程序,我应该使用哪种方法?
【问题讨论】:
-
也许不是你想要的,但这个 (stackoverflow.com/questions/23782804/…) 和这个 (stackoverflow.com/questions/29006822/…) 可能会帮助你找到正确的方向。在第一种情况下,我启用本地 ASP.NET 身份登录、ASP.NET 身份外部身份提供者登录和组织登录(通过 Azure AD)
标签: azure asp.net-identity owin azure-active-directory