2

我正在我的公司设置 OAuth 2 和 OIDC。

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

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

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

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

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

4

2 回答 2

2

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

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

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

于 2020-02-06T07:57:21.827 回答
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 也需要设置,但我建议的文档中有很多示例

于 2020-10-16T07:49:24.860 回答