我正在公司中设置OAuth 2和OIDC。
我使用oidc-client.js处理了从JavaScript客户端获取对受OAuth 2和OIDC保护的API的调用的访问令牌。
现在,当客户端是调用受OAuth 2和OIDC保护的API的C#.NET Core应用程序时,我需要获取访问令牌。
我可以尝试自己编写代码。但是有很多事情,我担心我会弄错一些。因此,这个问题:
.NET Core是否包括用于从身份提供者获取访问令牌的库?
要明确,我不正在寻找代码来保护带有OAuth2和OIDC的ASP.NET服务。该代码非常常见,很容易找到。 (实际上很难找到我要找的东西。)
答案 0 :(得分:1)
我在发出外发请求的.Net Core项目中使用Identity Model OIDC Client。它支持我认为的所有主要流程,并且已通过认证/基于标准。
我的某些代码使用其类here来演示语法类型。
如果您正在编写用于登录用户的非浏览器应用程序,则这很棘手,并且往往涉及调用系统浏览器。上面的库中有classes to support that。
答案 1 :(得分:0)
简短的答案是肯定的。如果我理解您的问题。
请查看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,但是我建议的文档上有很多示例