在angular auth oidc客户端中添加自定义参数,并在.net core identityserver4中访问



我想向angular auth-oidc客户端授权方法添加一个自定义参数,如下所示。在这种情况下,使用自定义参数client_id,我想编写一些自定义逻辑。

export class LoginComponent implements OnInit {
constructor(private oidcSecurityService: OidcSecurityService) {
}
ngOnInit() {
this.oidcSecurityService.authorize({customParams: { 'client_id': 'F93C5C9E-57DC-4889-86DD-66A98EAD94CC' } });
}
}

在后台,我在.net核心3.1应用程序中设置了identityserver4。我还实现了自定义ProfileService

public class ProfileService : IProfileService
{
protected UserManager<ApplicationUser> _userManager;
public ProfileService(UserManager<ApplicationUser> userManager)
{
_userManager = userManager;
}
public async Task GetProfileDataAsync(ProfileDataRequestContext context)
{
//>Processing
var user = await _userManager.GetUserAsync(context.Subject);
var claims = new List<Claim>
{
new Claim("FullName", user.FullName),
};
context.IssuedClaims.AddRange(claims);
}
public async Task IsActiveAsync(IsActiveContext context)
{
//>Processing
var user = await _userManager.GetUserAsync(context.Subject);

context.IsActive = (user != null) && user.IsActive;
}
}

也在startup.cs 中

services.AddIdentityServer()
.AddProfileService<ProfileService>();

如何在我的.net核心应用程序中访问从angular oidc客户端发送的自定义参数?

如果需要任何其他信息,请告诉我。

IdentityServer是一个经过认证的OpenId Connect协议实现,授权请求,具有预定义的结构,因此您不能引入任何所需的自定义参数。

根据说明书;免费的";参数是客户端使用的state,应按原样发送回响应,以及专门用于向服务器发送附加参数的acr_values

client_id不是自定义的,而是授权请求中的标准且必需的参数。所以一般情况下,你只需要正确设置它。

相关内容

最新更新