如何从ADFS(Active Directory联合身份验证服务)检索声明

时间:2016-12-30 09:04:34

标签: c# asp.net-mvc-4 adfs

我开发了一个ASP.NET MVC4应用程序并部署在客户端服务器上。我们的客户端使用ADFS(Active Directory联合身份验证服务),并希望ADFS用户登录我们的Web应用程序。我能够管理从ADFS登录。当用户尝试访问我的应用程序的登录页面时,他们会重新定向到ADFS登录,一旦经过身份验证,就会返回到我的应用程序。现在我需要在我的应用程序中登录ADFS时使用的这个电子邮件ID。我开始知道我们可以通过从ADFS检索声明来实现这一点。 我们如何从ADFS获取声明并在我们的MVC控制器中使用它。我真的很感激可以在这种情况下使用的简单代码示例。

1 个答案:

答案 0 :(得分:1)

我多年前写的这篇博客文章展示了如何使用外部Ws-Fed身份提供商进行身份验证的最小代码看起来像

http://www.wiktorzychla.com/2014/11/simplest-saml11-federated-authentication.html

诀窍是使用WSFederationAuthenticationModule的API

  • 检测带有saml令牌(IsSignInResponse
  • 的帖子
  • 验证并解析令牌(ValidateToken

你得到的是ClaimsIdentity的一个实例,你可以直接从中获取声明的内置类:

var identity = ...;

var email = identity.FindFirst( c => c.Type == ClaimTypes.Email );

https://msdn.microsoft.com/en-us/library/system.security.claims.claimsidentity(v=vs.110).aspx