c# - 有没有办法在不使用端点的情况下从 Identity Server 中生成访问 token ?

标签 c# asp.net oauth identityserver4

我正在构建身份服务器部署(Identity Server 4,托管在 ASP.NET Core MVC 应用程序中)。作为新用户注册过程的一部分,我需要身份服务器应用程序针对另一个 API 发出请求。基本上,我想使用客户端凭证流来发出此请求,而不是让身份服务器针对其自己的端点发出 http 请求,是否可以仅以编程方式在 C# 中生成 token ?

我想做的是这样的:

public class AccountController : Controller
{
    [HttpPost("register")]
    public async Task<IActionResult> Register(UserRegistrationModel model)
    {
        // do stuff like validate model, create user, update database, etc

        // generate access token for other API
        var client = identityServer4DbContext.Clients.FirstOrDefault(c => c.Id = "myself");
        var token = tokenService.CreateAccessToken(client, StandardScopes.All.Concat(scopeForMyOtherApi));
        var httpClient = new HttpClient();
        httpClient.BaseAddress = new Uri("https://myotherapi/");

        var result = await httpClient.GetAsync("resource/info-i-need");

        // do something with result.
    }
}

我看到 IdentityServer4 中有一个 ITokenService,但它需要一个 TokenCreationRequest 填充只有当您有一个 http 请求(对于 token )时才能得到的东西handle,所以好像只对IdentityServer4本身有用。

我还认识到我可以使用 IdentityModel 客户端对我自己的端点发出请求,但这会涉及更多我想避免的配置 - 更不用说它了似乎我不必在身份服务器应用程序本身中执行此操作。

最佳答案

在 IdentityServer 3 中,可以调用 IssueClientToken() OWIN 扩展方法。 在 IdSrv 4 中,使用 IdentityServerTools.IssueJwtAsync()IssueClientJwtAsync()

关于c# - 有没有办法在不使用端点的情况下从 Identity Server 中生成访问 token ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39981755/

相关文章:

具有插件之间共享接口(interface)的 C# 插件架构

c# - _double.Equals(_float);

c# - 如何在无序列表中添加项目?

c# - 一起使用 ELMAH 和 URLRewritingNet

ios - 针对 LinkedIn API 的 OAuth 不断返回 401。这是什么原因造成的?

node.js - 在 Nodejs 中使用 Passport 模块进行 OAuth

c# - DockingManager 是否带有用于处理 Anchorables 的内置方法

c# - Azure ServiceBusConnectionStringBuilder 中的 "entityPath"是什么?

c# - 复选框!指定的转换无效

android - 使用 ngCordova-oauth 在 Ionic App 中进行社交身份验证