Azure AD 和 ASP.NET Identity + OWIN,使用哪种方法?
Azure AD and ASP.NET Identity + OWIN, which approach to use?
我们有 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 创建新应用程序并使用组织帐户选项配置身份验证时,它会添加以下应用程序设置
'ida:FederationMetadataLocation'、'ida:Realm' 和 'ida:AudienceUri' 然后添加验证用户的代码
问题
1> 我不确定我应该使用哪种方法,有什么区别。
2> 根据 Microsoft 视频 here,如果您使用第二种方法创建应用程序,Visual Studio 将在 Azure AD 中为该租户创建应用程序。但是它不再创建了,最近有变化吗?我们是否总是需要在 Azure AD 中手动创建应用程序?
EDIT1
当我在 VS 2013 中创建新的 MVC 或 Web 窗体应用程序并配置身份验证时,有 4 个选项。其中 2 个是 'Individual Accounts' 和 'Organizational Accounts'。上面提到的方法 1 适用于 "Individual Accounts",方法 2 适用于组织帐户。但是我仍然不知道什么时候应该使用一个而不是另一个?为什么一个使用客户端 ID 而另一个使用 restful API(联合元数据)?如果我希望同一个用户可以访问多个云应用程序,我应该使用哪种方法?
这是所有 AzureAD 示例。
https://github.com/azure-samples?query=active-directory
尤其是这些 OIDC 示例应该可以帮助您前进。如果您遇到困难,请告诉我。
https://github.com/Azure-Samples/active-directory-dotnet-webapp-openidconnect
https://github.com/Azure-Samples/active-directory-dotnet-webapp-openidconnect-aspnet5
抱歉造成混淆。您正在经历的是随着技术的发展而出现的多个版本的分层。让我澄清几点。
- Visual Studio 2013 年 OWIN Web 签名中间件之前发货
可用。因此,ASP.NET 项目模板
仍然基于旧技术(Windows Identity Foundation)并且
旧协议(ws-federation)。
- VS2013 发布后,我们开发了新的 类(您在快速入门文章中遇到过),它支持通过更灵活的对象模型(OWIN 中间件)和更现代的协议(openid 连接)进行 Web 登录.您可以选择使用 类 "manually",如快速入门中所述,或使用 Visual Studio 2015 中的新模板 - 放弃旧技术 (WIF) 并自动执行 a)使用 OWIN 中间件生成项目 b) 在您选择的 Azure AD 租户中为应用程序配置一个条目。
- 个人帐户与 "work & school" 帐户的选择允许您 select 您的应用程序是否逐一验证用户(对于前者)并拥有所有用户的详细信息,或者您是否想要您的应用程序将身份验证外包给您的用户所在的组织。如果你想使用 Azure AD,你想做后者:身份验证由 Azure AD 完成,你只希望你的应用程序配置为在需要对用户进行身份验证时重定向到 Azure AD。
我们有 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 创建新应用程序并使用组织帐户选项配置身份验证时,它会添加以下应用程序设置
'ida:FederationMetadataLocation'、'ida:Realm' 和 'ida:AudienceUri' 然后添加验证用户的代码
问题
1> 我不确定我应该使用哪种方法,有什么区别。
2> 根据 Microsoft 视频 here,如果您使用第二种方法创建应用程序,Visual Studio 将在 Azure AD 中为该租户创建应用程序。但是它不再创建了,最近有变化吗?我们是否总是需要在 Azure AD 中手动创建应用程序?
EDIT1
当我在 VS 2013 中创建新的 MVC 或 Web 窗体应用程序并配置身份验证时,有 4 个选项。其中 2 个是 'Individual Accounts' 和 'Organizational Accounts'。上面提到的方法 1 适用于 "Individual Accounts",方法 2 适用于组织帐户。但是我仍然不知道什么时候应该使用一个而不是另一个?为什么一个使用客户端 ID 而另一个使用 restful API(联合元数据)?如果我希望同一个用户可以访问多个云应用程序,我应该使用哪种方法?
这是所有 AzureAD 示例。 https://github.com/azure-samples?query=active-directory
尤其是这些 OIDC 示例应该可以帮助您前进。如果您遇到困难,请告诉我。
https://github.com/Azure-Samples/active-directory-dotnet-webapp-openidconnect https://github.com/Azure-Samples/active-directory-dotnet-webapp-openidconnect-aspnet5
抱歉造成混淆。您正在经历的是随着技术的发展而出现的多个版本的分层。让我澄清几点。
- Visual Studio 2013 年 OWIN Web 签名中间件之前发货 可用。因此,ASP.NET 项目模板 仍然基于旧技术(Windows Identity Foundation)并且 旧协议(ws-federation)。
- VS2013 发布后,我们开发了新的 类(您在快速入门文章中遇到过),它支持通过更灵活的对象模型(OWIN 中间件)和更现代的协议(openid 连接)进行 Web 登录.您可以选择使用 类 "manually",如快速入门中所述,或使用 Visual Studio 2015 中的新模板 - 放弃旧技术 (WIF) 并自动执行 a)使用 OWIN 中间件生成项目 b) 在您选择的 Azure AD 租户中为应用程序配置一个条目。
- 个人帐户与 "work & school" 帐户的选择允许您 select 您的应用程序是否逐一验证用户(对于前者)并拥有所有用户的详细信息,或者您是否想要您的应用程序将身份验证外包给您的用户所在的组织。如果你想使用 Azure AD,你想做后者:身份验证由 Azure AD 完成,你只希望你的应用程序配置为在需要对用户进行身份验证时重定向到 Azure AD。