0

我们目前正在.NET 中使用 Owin 和 Kentor 实现 SAML 身份验证。我们正在正确读取令牌,并且我收到了所有索赔。但是,当我解析 Owin 返回给我的 User.Identity 对象时,上面没有名称(如果我使用的是 Azure Active Directory 等,我会有这个名称)。有谁知道使用令牌中的一些返回声明来设置 User.Identity.Name 的方法?在这种情况下,有问题的声明是 EmpFirstName 和 EmpLastName。

4

2 回答 2

1

只是为安德斯提供的两个(更好的)答案添加第三个选项:

当我需要这样做时,我找到了我想成为用户名的声明并创建了一个新声明:

 subject.AddClaim(new Claim("http://schemas.xmlsoap.org/ws/2005/05/identity/claims/name",claim.Value));

然后身份将识别它。

于 2016-08-15T16:27:56.677 回答
0

有两种方法可以做到这一点。

  1. 在声明创建期间实现ClaimsAuthenticationManager一个回调机制(参见 GitHub 存储库中的 Kentor AuthServices 文档)。AcsCommandResultCreated如果您发现通知更易于使用,您也可以使用通知。在那里,添加您想要的名称声明(例如,通过组合现有的名字和姓氏声明)。
  2. 如果您希望Identity.Name指向现有声明,请更改NameClaimTypeIdentity 的属性。
于 2016-08-09T20:38:05.767 回答