【发布时间】:2016-11-07 11:21:35
【问题描述】:
我一直在四处寻找,试图找到一个如何将 ADFS 身份验证添加到现有 ASP.Net MVC 应用程序的示例。在创建新应用程序时,我找到了很多使用向导的示例。
我可以创建一个新应用并复制代码和配置,但这似乎是一种奇怪的方法。
有人知道好的指南或资源吗?
【问题讨论】:
标签: asp.net-mvc adfs
我一直在四处寻找,试图找到一个如何将 ADFS 身份验证添加到现有 ASP.Net MVC 应用程序的示例。在创建新应用程序时,我找到了很多使用向导的示例。
我可以创建一个新应用并复制代码和配置,但这似乎是一种奇怪的方法。
有人知道好的指南或资源吗?
【问题讨论】:
标签: asp.net-mvc adfs
我们发现 Cloud Identity 上的这篇博客文章对开始使用类似的东西非常有帮助。我们使用的是 Web API,所以并不完全相同。
您需要将此添加到您的 Startup.Auth.cs 文件中:
app.UseActiveDirectoryFederationServicesBearerAuthentication(
new ActiveDirectoryFederationServicesBearerAuthenticationOptions
{
Audience = ConfigurationManager.AppSettings["ida:Audience"],
MetadataEndpoint = ConfigurationManager.AppSettings["ida:MetadataEndpoint"]
});
在您的 web.config 中,您将需要指向这些条目的键:
<add key="ida:AdfsMetadataEndpoint" value="https://adfs.yourdomain.com/federationmetadata/2007-06/federationmetadata.xml" />
<add key="ida:Audience" value="https://yourmvc.yourdomain.com" />
请注意,您使用的 ADFS 版本有很大不同。我们发现,在尝试使令牌与 ADFS 3.0 版一起使用时,它们目前有些损坏。本地 ADFS 的工作方式也与 Azure 大不相同。
我们需要为我们的实现自定义声明,this 的帖子提供了极大的帮助。 Startup.Auth.cs 看起来类似于:
app.UseWindowsAzureActiveDirectoryBearerAuthentication(
new WindowsAzureActiveDirectoryBearerAuthenticationOptions
{
Audience = ConfigurationManager.AppSettings["ida:Audience"],
Tenant = ConfigurationManager.AppSettings["ida:Tenant"],
Provider = new OAuthBearerAuthenticationProvider()
{
OnValidateIdentity = async context =>
{
context.Ticket.Identity.AddClaim(
new Claim(http://mycustomclaims/hairlenght,
RetrieveHairLenght(userID),
ClaimValueTypes.Double,
"LOCAL AUTHORITY");));
}
}
});
【讨论】: