我一直在四处寻找,试图找到一个如何将ADFS身份验证添加到现有ASP.Net MVC应用程序的示例。在创建新应用程序时,我找到了很多使用向导进行操作的示例。
我可以创建一个新的应用程序并复制代码和配置,但这种接缝就像一种奇怪的方法。
有没有人知道好的指南或资源?
答案 0 :(得分:2)
我们在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");));
}
}
});