Asp.net 如何创建一个独立的.NET客户端来调用由OAuth保护的web服务?

Asp.net 如何创建一个独立的.NET客户端来调用由OAuth保护的web服务?,asp.net,asp.net-core,oauth,identityserver4,Asp.net,Asp.net Core,Oauth,Identityserver4,我需要编写一个独立的(命令行)程序来调用使用OAuth 2进行身份验证的web服务。web服务使用IdentityServer4。我正在寻找一个库,我可以使用这个和一些示例代码 我是OAuth新手,所以不了解协议的所有细节,但我能够通过提供这些参数,使用postman获得令牌。我猜authURL是登录屏幕的地址 身份验证URL、访问令牌URL、客户端ID、客户端机密和作用域 当我请求一个令牌时,邮递员会进入一个由实现OAuth的服务器实现的登录页面,在那里我需要输入一个单独的用户名和密码 如果我

我需要编写一个独立的(命令行)程序来调用使用OAuth 2进行身份验证的web服务。web服务使用IdentityServer4。我正在寻找一个库,我可以使用这个和一些示例代码

我是OAuth新手,所以不了解协议的所有细节,但我能够通过提供这些参数,使用postman获得令牌。我猜authURL是登录屏幕的地址

身份验证URL、访问令牌URL、客户端ID、客户端机密和作用域

当我请求一个令牌时,邮递员会进入一个由实现OAuth的服务器实现的登录页面,在那里我需要输入一个单独的用户名和密码

如果我的理解是正确的,为了实现这一点,我们需要对服务器进行更改,以允许以某种方式通过向应用程序用户名传递密码进行非交互式登录。

客户端和助手可以简化从IdentityServer请求(和使用)访问令牌的过程。您可以在其上找到有关该库的信息。关于如何获取令牌并使用它们在IdentityServer4 QuickStart中调用web API,有一些很好的示例:

下面是一个使用客户端凭据获取令牌,然后使用令牌调用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");

通用oauth流是为浏览器而不是客户端应用程序设计的。查看客户端应用程序的Jwt Bear和webapi流。@Tracher-我们创建的后端是为前端web应用程序服务的,因此有一个登录页面是有意义的,但我们也希望有一个非交互式客户端用于测试目的。是否可以设计交互和非交互工作的OAuth工作流?如果可能的话,我们不想引入第二种身份验证方法。这看起来很有希望。目前,我们需要通过服务器实现的登录屏幕(已修改我的问题)。我认为我们需要在服务器端配置Identity server以允许非交互式身份验证,您知道我们将如何使用Identity Model进行身份验证吗?我的错误-我误解了您的问题。我错过了关于OAuth的部分,并假设您正在使用Jwt承载中间件对API进行身份验证,因为这是典型的方法。