从 .NET Core 中的标识提供者获取访问令牌?



我正在我的公司建立OAuth 2和OIDC。

我使用 oidc-client.js 来处理从 javascript 客户端获取对受 OAuth 2 和 OIDC 保护的 API 的调用的访问令牌。

当客户端是调用受 OAuth 2 和 OIDC 保护的 API 的 C# .NET Core 应用程序时,我现在需要获取访问令牌。

我可以尝试自己编写代码。 但是有很多事情要做,我担心我会弄错一些。 因此这个问题:

.NET Core 是否包含用于从标识提供者获取访问令牌的库?

需要明确的是,我不是在寻找使用 OAuth2 和 OIDC 保护 ASP.NET 服务的代码。 该代码非常常见且易于找到。 (事实上很容易,找到我想要的东西很难。

我在发出传出请求的.Net Core项目中使用身份模型OIDC客户端。它支持我相信的所有主流,并且经过认证/基于标准。

我的一些代码在这里使用它的类来演示语法的类型。

如果您正在编写一个登录用户的非浏览器应用程序,那么这很棘手,并且往往涉及调用系统浏览器。上面的库有类来支持这一点。

简短的回答是肯定的。如果我理解你的问题。

查看 IdentityServer4 https://identityserver4.readthedocs.io/en/latest/上的文档,因为它提供了从 asp.net 核心访问 OAuth2 令牌服务的示例,它应该转换为您正在使用的任何令牌服务器。

但本质上,您设置了将用于请求的 http 客户端: 其中:客户端是 HttpClient 的实例

DiscoveryDocumentResponse disco = await 
Client.GetDiscoveryDocumentAsync("https://your_token_server/");
var tokenResponse = await Client.RequestClientCredentialsTokenAsync(new 
ClientCredentialsTokenRequest
{
Address = disco.TokenEndpoint,
ClientId = "Some_Client_Id",
ClientSecret = "Some_Client_Secret",
Scope = "Some_Api_Scope"
});
Client.SetBearerToken(tokenResponse.AccessToken);

还需要设置 api,但我建议的文档上有很多示例

最新更新