使用OpenIddict请求令牌时,如何添加要返回的自定义声明?

达巴斯

我正在构建ASP.NET Core 1.1应用程序(跨平台),并尝试(使用此示例access_token在请求/connect/token端点向返回的自定义声明中添加自定义声明
我需要的不仅是返回在中序列化的声明,access_token而且还要在响应中将其返回,如下所示:

{
 "token_type": "Bearer",
 "access_token": "...",
 "expires_in": 1799,
 "custom_claim": "..."
}

我在互联网上发现的内容必须使用AspNet.Security.OpenIdConnect.Server并编写我的提供程序才能执行我想要的操作。
使用第一个样本不是简单的方法吗?
我正在使用OAUth 2.0,授予类型Password且没有JWT。
不要求不使用JWT,这只是我在ASP.NET 4.5中曾经使用过OAuth

凯文·查莱特

我需要的不仅是返回在access_token中序列化的声明,而且要在这样的响应中返回它们:

尽管我鼓励您将这些声明存储在身份令牌中-以便客户端可以以完全标准的方式轻松读取它们,但在OpenIddict 1.0和2.0 RTM中还是可以的。为此,您有2个选择:

使用特殊的“公共”属性(在您的授权控制器中,在其中创建身份验证票证):

ticket.SetProperty("custom_claim" + OpenIddictConstants.PropertyTypes.String, user.Id);

注意:OpenIddictConstants.PropertyTypes.String是一个特殊的后缀,指示添加到票证的身份验证属性可以作为令牌响应的一部分公开。如果您希望将声明作为JSON数字或更复杂的JSON结构返回,则可以使用其他常量。

使用事件模型(在Startup.cs中):

services.AddOpenIddict()

    // Register the OpenIddict core services.
    .AddCore(options =>
    {
        // ...
    })

    // Register the OpenIddict server handler.
    .AddServer(options =>
    {
        // ...

        options.AddEventHandler<OpenIddictServerEvents.ApplyTokenResponse>(
            notification =>
            {
                if (string.IsNullOrEmpty(notification.Context.Error))
                {
                    var principal = notification.Context.Ticket.Principal;
                    var response = notification.Context.Response;
                    response["custom_claim"] = principal.FindFirst("your_claim_attached_to_the_principal").Value;
                }

                return Task.FromResult(OpenIddictServerEventState.Unhandled);
            });
    })

    // Register the OpenIddict validation handler.
    .AddValidation();

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

在Laravel 5中使用表单请求验证时如何添加自定义验证规则

来自分类Dev

使用chrome自定义标签时,是否可以添加自定义请求标头?

来自分类Dev

Openiddict。将自定义声明保存到 AspNetUserClaims 表

来自分类Dev

使用Doctrine ORM时如何自定义返回的数据?

来自分类Dev

Django REST:如何以带有自定义声明的HttpOnly cookie的形式返回SimpleJWT访问并刷新令牌?

来自分类Dev

使用Java在xml中添加自定义声明

来自分类Dev

要添加自定义模板?

来自分类Dev

如何使用sip REGISTER请求添加自定义标头

来自分类Dev

如何使用js或jQuery向ajax请求添加自定义HTTP标头

来自分类Dev

如何使用纯JavaScript在Ajax请求中添加自定义标头(非JQUERY)?

来自分类Dev

如何使用自定义Axios实例取消令牌?

来自分类Dev

如何在Office JS Excel加载项的自定义函数中使用令牌授权请求数据?

来自分类Dev

如何使用自定义类型声明 Arduino 数组?

来自分类Dev

如何为 QListIterator 使用声明自定义 typedef

来自分类Dev

如何在Rails 4中添加要设计的自定义字段并自定义注册控制器?

来自分类Dev

添加自定义请求标头

来自分类Dev

如何自定义AutoFixture有时返回Null

来自分类Dev

使用Laravel 5.1 Authorize方法时如何返回自定义403异常

来自分类Dev

在JPQL中使用自定义构造函数返回相关实体时如何避免INNER JOIN

来自分类Dev

记录Twilio通话时如何添加自定义参数?

来自分类Dev

单击按钮Xamarin时如何添加自定义视图

来自分类Dev

使用CocoaPods时如何将自定义项目配置添加到Xcode?

来自分类Dev

使用打字稿时如何添加自定义扩展名

来自分类Dev

使用Bootstrap时如何添加自定义CSS样式表

来自分类Dev

使用Boto3创建存储桶时如何添加自定义标头?

来自分类Dev

如何使用自定义请求验证laravel数组?

来自分类Dev

使用 TypeScript 时添加自定义 Cypress 命令

来自分类Dev

使用自定义令牌以管理员身份向FB DB发出REST请求

来自分类Dev

如何访问自定义声明?

Related 相关文章

  1. 1

    在Laravel 5中使用表单请求验证时如何添加自定义验证规则

  2. 2

    使用chrome自定义标签时,是否可以添加自定义请求标头?

  3. 3

    Openiddict。将自定义声明保存到 AspNetUserClaims 表

  4. 4

    使用Doctrine ORM时如何自定义返回的数据?

  5. 5

    Django REST:如何以带有自定义声明的HttpOnly cookie的形式返回SimpleJWT访问并刷新令牌?

  6. 6

    使用Java在xml中添加自定义声明

  7. 7

    要添加自定义模板?

  8. 8

    如何使用sip REGISTER请求添加自定义标头

  9. 9

    如何使用js或jQuery向ajax请求添加自定义HTTP标头

  10. 10

    如何使用纯JavaScript在Ajax请求中添加自定义标头(非JQUERY)?

  11. 11

    如何使用自定义Axios实例取消令牌?

  12. 12

    如何在Office JS Excel加载项的自定义函数中使用令牌授权请求数据?

  13. 13

    如何使用自定义类型声明 Arduino 数组?

  14. 14

    如何为 QListIterator 使用声明自定义 typedef

  15. 15

    如何在Rails 4中添加要设计的自定义字段并自定义注册控制器?

  16. 16

    添加自定义请求标头

  17. 17

    如何自定义AutoFixture有时返回Null

  18. 18

    使用Laravel 5.1 Authorize方法时如何返回自定义403异常

  19. 19

    在JPQL中使用自定义构造函数返回相关实体时如何避免INNER JOIN

  20. 20

    记录Twilio通话时如何添加自定义参数?

  21. 21

    单击按钮Xamarin时如何添加自定义视图

  22. 22

    使用CocoaPods时如何将自定义项目配置添加到Xcode?

  23. 23

    使用打字稿时如何添加自定义扩展名

  24. 24

    使用Bootstrap时如何添加自定义CSS样式表

  25. 25

    使用Boto3创建存储桶时如何添加自定义标头?

  26. 26

    如何使用自定义请求验证laravel数组?

  27. 27

    使用 TypeScript 时添加自定义 Cypress 命令

  28. 28

    使用自定义令牌以管理员身份向FB DB发出REST请求

  29. 29

    如何访问自定义声明?

热门标签

归档