我設定了一個身份服務器客戶端,以便能夠使用密碼和授權碼授予,我能夠使用這兩種授予,但是當審查令牌時,它們不包含相同的要求,這是它應該作業的方式還是我缺少一些配置?
如果它是這樣作業的(每個授予中的不同索賠),當使用密碼授予時,我應該使用組態檔服務來添加其他索賠嗎?
uj5u.com熱心網友回復:
你需要實作一個IResourceOwnerPasswordValidator,并回傳你需要的索賠串列。默認的實作只發送sub索賠。
參見IdentityServer repo中的ASP.NET Core Identity示例實作。
然后修改它以發送額外的請求。或者使用ProfileService來填充它:
public virtual async 任務 ValidateAsync(ResourceOwnerPasswordValidationContext context)
{
var user = await _userManager.FindByNameAsync(context.UserName)。
if (user != null)
{
var result = await _signInManager.CheckPasswordSignInAsync(user, context.Password, true) 。
if (result.Succeeded)
{
var sub = await _userManager.GetUserIdAsync(user)。
_logger.LogInformation("Credentials validated for username: {username}", context.UserName)。)
//回傳額外的索賠。
var claims = await _userManager.GetClaimsAsync(user)。
context.Result = new GrantValidationResult(sub, AuthenticationMethods.Password, claims)。
return。
}
// ......見上面的鏈接,了解完整的實作。
}
你也可以創建一個新的ClaimsPrincipal來填充結果。請參閱GrantValidationResult建構式多載以了解其他選項。
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/332801.html
標籤:
