首页 文章

如何创建一个独立的.NET客户端,该客户端调用使用OAuth保护的Web服务?

提问于
浏览
-1

我需要编写一个独立(命令行)程序,该程序调用使用OAuth 2进行身份验证的Web服务 . Web服务使用IndentityServer4 . 我正在寻找一个可用于此的库和一些示例代码 .

我是OAuth的新手,所以不了解协议的所有细节,但我能够通过提供这些参数来使用邮递员获得令牌 . 我想Auth URL是登录屏幕的地址 .

验证URL,访问令牌URL,ClientID,客户端密钥和范围 .

当我请求令牌邮递员进入实施OAuth的服务器实现的登录页面时,我需要输入单独的用户名和密码 .

如果我的理解是正确的,为了使其工作,我们需要对服务器进行更改以允许通过以某种方式将应用程序用户名传递给密码来进行非交互式登录 .

1 回答

  • 0

    IdentityModel nuget package具有客户端和帮助程序,以简化从IdentityServer请求(和使用)访问令牌的过程 . 您可以在github page上找到有关该库的信息 . 有一些很好的示例,说明如何获取令牌并使用它们在IdentityServer4快速入门中调用Web API:

    Protecting an API using client credentials

    Protecting an API using passwords

    以下是使用客户端凭据获取令牌然后使用令牌调用api的示例:

    // discover the token endpoint
    var disco = await DiscoveryClient.GetAsync("http://identityserver");
    
    // request an access token
    var tokenClient = new TokenClient(disco.TokenEndpoint, "client", "secret");
    var tokenResponse = await tokenClient.RequestClientCredentialsAsync("your-api");
    
    // call the api
    var client = new HttpClient();
    client.SetBearerToken(tokenResponse.AccessToken);
    
    var response = await client.GetAsync("http://yourapi/some-resource");
    

相关问题