You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在C#中通过AddAccessTokenManagement实现OAuth2密码模式认证?

实现OAuth2 Password授权模式的配置方案

要切换到grant_type=password模式,核心是把ClientCredentialsTokenRequest替换为专门对应密码模式的PasswordTokenRequest类型,同时补充用户名和密码的配置项。以下是修改后的完整代码:

private static void ConfigureOuathAuthentication(IServiceCollection services, OuathAuthenticationConfiguration ouathAuthenticationConfiguration)
{
    services.AddAccessTokenManagement(options =>
    {
        options.Client.Clients.Add("identityserver", new PasswordTokenRequest
        {
            Address = ouathAuthenticationConfiguration.Address,
            ClientId = ouathAuthenticationConfiguration.ClientId,
            // 若你的OAuth服务要求客户端认证需提供密钥则保留,不需要可删除
            ClientSecret = ouathAuthenticationConfiguration.ClientSecret,
            Scope = ouathAuthenticationConfiguration.Scope,
            GrantType = ouathAuthenticationConfiguration.GrantType, // 此处需设为"password"
            UserName = ouathAuthenticationConfiguration.UserName, // 新增:配置用户名
            Password = ouathAuthenticationConfiguration.Password  // 新增:配置密码
        });
    });

    services.AddClientAccessTokenHttpClient("client_ouath", configureClient: client =>
    {
        client.BaseAddress = new Uri(ouathAuthenticationConfiguration.ApiBaseAddress); // 注意:此处应为你要访问的API地址,而非令牌端点地址
    });
}

关键配置说明

  • PasswordTokenRequest:这是专门适配密码授权模式的请求对象,内置UserName和Password属性,完全匹配password授权类型的参数要求。
  • 必填参数:Address(令牌端点URL)、ClientId、UserName、Password、GrantType(必须设置为"password")。
  • 可选参数:ClientSecret(按需添加,取决于OAuth服务是否要求客户端密钥认证)、Scope(按需指定所需权限范围)。

使用方式

配置完成后,可通过两种方式使用令牌:

  1. 直接获取令牌:注入IAccessTokenManagementService,调用GetAccessTokenAsync方法:
var token = await _accessTokenManagementService.GetAccessTokenAsync("identityserver");
  1. 使用预配置HttpClient:通过依赖注入获取命名为client_ouath的HttpClient,它会自动获取并将令牌附加到请求头中。

内容的提问来源于stack exchange,提问作者Redzix

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.04 23:35:23