gpt4 book ai didi

asp.net-mvc - 如何为混合流客户端填充自定义身份资源声明?

转载 作者:行者123 更新时间:2023-12-05 01:34:28 25 4
gpt4 key购买 nike

我有一个带有自定义身份资源的 IdentityServer4 服务器:

new IdentityResource
{
Name = "custom.profile",
UserClaims = new[] { "location" }
}

此资源由使用 OIDC 混合流连接且没有同意页面的 ASP.NET MVC 客户端的用户使用:
new Client
{
ClientId = "client.mvc",
ClientName = "MVC Core Client",
AllowedGrantTypes = GrantTypes.Hybrid,
...
AllowedScopes =
{
IdentityServerConstants.StandardScopes.OpenId,
IdentityServerConstants.StandardScopes.Profile,
"custom.profile"
},

登录是在 <idsrv>/Login/DoLogin 中手动完成的:
public async Task<IActionResult> DoLogin(LoginInputModel model)
{
if (ModelState.IsValid)
{
if (model.Username == "test.user" && model.Password == "password")
{
Guid userId = new Guid("8da49efb-a1aa-4253-bb7f-56cc6c532b78");

await HttpContext.Authentication.SignInAsync(userId.ToString(), model.Username);

if (_interaction.IsValidReturnUrl(model.ReturnUrl))
{
return Redirect(model.ReturnUrl);
}

return Redirect("~/");
}

ModelState.AddModelError("", "Invalid username or password.");
}

我的问题是,如何/在哪里为用户填充“ location”范围的“ custom.profile”值?

最佳答案

您基本上需要实现 GetProfileDataAsync IProfileService上的方法服务添加一些声明。

所以在启动时确保你有类似的东西:

identityServerBuilder.Services.AddScoped<IProfileService, ProfileService>();

然后在您的 ProfileService类有这样的东西:
public Task GetProfileDataAsync(ProfileDataRequestContext context) {
context.IssuedClaims.Add(new Claim()); //Your claims(s)
}

关于asp.net-mvc - 如何为混合流客户端填充自定义身份资源声明?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41099342/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com