我尝试使用IServiceCollection.AddAccessTokenManagement -> ClientCredentialsTokenRequest
对象在C#中配置“通用”OAuth2客户端身份验证。我可以创建grant_type=client_credentials
身份验证,没有任何问题,它可以工作。不幸的是,我不知道如何以相同的方式使用grant_type=password
。我有用户名、密码、获取有效令牌所需的访问令牌URL和ClientID(在Postman中有效)。我如何在C#中实现类似的东西?
private static void ConfigureOuathAuthentication(IServiceCollection services, OuathAuthenticationConfiguration ouathAuthenticationConfiguration)
{
services.AddAccessTokenManagement(options =>
{
options.Client.Clients.Add("identityserver", new ClientCredentialsTokenRequest
{
Address = ouathAuthenticationConfiguration.Address,
ClientId = ouathAuthenticationConfiguration.ClientId,
ClientSecret = ouathAuthenticationConfiguration.ClientSecret,
Scope = ouathAuthenticationConfiguration.Scope, // optional
GrantType = ouathAuthenticationConfiguration.GrantType
});
});
services.AddClientAccessTokenHttpClient("client_ouath", configureClient: client =>
{
client.BaseAddress = new Uri(ouathAuthenticationConfiguration.Address);
});
}
1条答案
按热度按时间kgsdhlau1#
根据您的代码片段,我添加了
Resource Owner Password Credentials
流,也称为password
流。如果您有一个有效的身份提供者支持它,并且提供了适当的参数,那么它应该可以工作。