.net core .NET核心标识-如何从路径/连接/令牌以外的其他位置生成令牌

.net core .NET核心标识-如何从路径/连接/令牌以外的其他位置生成令牌,.net-core,jwt,asp.net-identity,identityserver4,access-token,.net Core,Jwt,Asp.net Identity,Identityserver4,Access Token,在我的web api应用程序中,我从http:applicationpath/connect/token获得了带有一些参数的访问令牌(我认为这个端点来自Identity,因为我们没有创建它,也看不到它)。 但现在我需要从一个特定的控制器生成令牌,但看不到如何做到这一点。 有人知道怎么做?或者即使有可能? 谢谢 更多信息: 我的应用程序是android应用程序(app1)和其他web应用程序(app2)之间的集成程序(这个词是吗?)。 1-app1用户将向我的应用程序发送登录名和密码。 2-然后我

在我的web api应用程序中,我从http:applicationpath/connect/token获得了带有一些参数的访问令牌(我认为这个端点来自Identity,因为我们没有创建它,也看不到它)。 但现在我需要从一个特定的控制器生成令牌,但看不到如何做到这一点。 有人知道怎么做?或者即使有可能? 谢谢

更多信息:


我的应用程序是android应用程序(app1)和其他web应用程序(app2)之间的集成程序(这个词是吗?)。
1-app1用户将向我的应用程序发送登录名和密码。
2-然后我的应用程序将发送给app2,如果一切顺利,app2将返回app2令牌。
3-然后我必须将此令牌保存在我的数据库中。
4-然后验证my db中是否存在该用户,如果不存在,则保存该用户。
5-最后为我的应用程序生成一个令牌并将其返回给用户。

根据您的评论:


但是,我是否可以不改变默认端点,而改另一个端点 执行相同操作的端点(生成令牌)

看来你在找我。这其实很容易

在启动配置中添加自定义项:

services.AddIdentityServer(options =>
{
    options.Discovery.CustomEntries.Add("custom_token", "~/customtoken");
});
并添加处理请求的控制器:

using Microsoft.AspNetCore.Authentication.JwtBearer;
using Microsoft.AspNetCore.Authorization;
using Microsoft.AspNetCore.Mvc;

// In case a token is required for login, like the UserInfo endpoint:
//[Authorize(AuthenticationSchemes = JwtBearerDefaults.AuthenticationScheme)]
[ApiController]
public class CustomTokenController : ControllerBase
{
    [Route("customtoken")]
    public IActionResult CustomTokenEndpoint()
    {
        return Ok();
    }
}

更新

您可以通过如上所述禁用默认授权端点并添加自定义端点来“替换”端点

禁用终结点:

services
    .AddIdentityServer(options =>
    {
        options.Endpoints.EnableAuthorizeEndpoint = false;
    })
services.AddIdentityServer(options =>
{
    options.Discovery.CustomEntries.Add("authorization_endpoint", $"~/{Authorize}");
});
您可能需要使用

添加新端点:

services
    .AddIdentityServer(options =>
    {
        options.Endpoints.EnableAuthorizeEndpoint = false;
    })
services.AddIdentityServer(options =>
{
    options.Discovery.CustomEntries.Add("authorization_endpoint", $"~/{Authorize}");
});

请注意,我没有测试它,但我认为它应该可以工作。

这是否回答了您的问题?但是,我是否可以不更改默认端点,而是创建另一个执行相同操作的端点(生成令牌)?这是用于用自定义路由覆盖默认路由?@LucasGabriel否,它不会覆盖默认端点。它添加了一个自定义端点。正如您在评论中所问的:但是我可以不更改默认端点而创建另一个端点吗?我需要的是将默认控制器的内容放在其他地方。这个内容是我没有的。抱歉搞混了description@LucasGabriel你能解释一下原因吗?你想用语言来完成什么,而不是用技术解决方案来思考。您想替换令牌生成器还是什么?我的应用程序是android应用程序(app1)和其他web应用程序(app2)之间的集成程序(这是单词吗?)。1-app1用户将向我的应用程序发送登录名和密码。2-然后我的应用程序将发送给app2,如果一切顺利,app2将返回app2令牌。3-然后我必须将此令牌保存在我的数据库中。4-然后验证用户是否存在于我的数据库中,如果不存在,则保存它。5-最后为我的应用程序生成一个令牌并将其返回给用户。