【发布时间】:2015-10-01 07:50:23
【问题描述】:
我已经在我的移动服务中实现了自定义身份验证,但是我添加到我的 ClaimsIdentity 对象的声明似乎没有被保存。
我创建了自己的 ClaimsIdentity 对象,然后将其传递给 CreateLoginResult 方法,如下:
public IServiceTokenHandler Handler { get; set; }
...
ClaimsIdentity claimsIdentity = new ClaimsIdentity();
claimsIdentity.AddClaim(new Claim(ClaimTypes.NameIdentifier, "username"));
claimsIdentity.AddClaim(new Claim(ClaimTypes.GivenName, "FirstName"));
claimsIdentity.AddClaim(new Claim(ClaimTypes.Surname, "LastName"));
LoginResult login = new CustomLoginProvider(Handler).CreateLoginResult(claimsIdentity, "masterkey");
如果我使用返回的授权令牌调用另一个方法并尝试检索 GivenName 或 Surname 声明,它们不可用。
var identity = (ClaimsIdentity)User.Identity;
// 'claim' will be null
Claim claim = identity.FindFirst(ClaimTypes.GivenName);
这是预期的行为还是我做错了什么?我假设正在发送到 CreateLoginResult 的 ClaimsIdentity 对象中的声明正在针对该经过身份验证的用户进行保存。
【问题讨论】:
标签: azure azure-mobile-services claims-based-identity