在 ASP.NET WebApi 2 中自定义承载令牌 JSON 结果

Posted

技术标签:

【中文标题】在 ASP.NET WebApi 2 中自定义承载令牌 JSON 结果【英文标题】:Customize Bearer token JSON result in ASP.NET WebApi 2 【发布时间】:2014-08-10 21:39:00 【问题描述】:

我演练this official ASP.NET tutorial,不记名令牌发布如下 JSON。


    "access_token":"boQtj0SCGz2GFGz[...]",
    "token_type":"bearer",
    "expires_in":1209599,
    "userName":"Alice",
    ".issued":"Mon, 14 Oct 2013 06:53:32 GMT",
    ".expires":"Mon, 28 Oct 2013 06:53:32 GMT"

我想在上述结果中添加用户配置文件属性,以减少来自客户的请求数量。示例如下...


    "access_token":"boQtj0SCGz2GFGz[...]",
    "token_type":"bearer",
    "expires_in":1209599,
    "userName":"Alice",
    ".issued":"Mon, 14 Oct 2013 06:53:32 GMT",
    ".expires":"Mon, 28 Oct 2013 06:53:32 GMT",
    "Notifications":35,
    "IsEventMember":true,
    "Promotion":324372

我使用的 oauth 提供程序来自默认的 ASP.NET 模板 (ApplicationOAuthProvider.cs),OAuthOption 如下。

            OAuthOptions = new OAuthAuthorizationServerOptions
        
            TokenEndpointPath = new PathString("/Token"),
            Provider = new ApplicationOAuthProvider(PublicClientId, UserManagerFactory),
            AuthorizeEndpointPath = new PathString("/api/Account/ExternalLogin"),
            AccessTokenExpireTimeSpan = TimeSpan.FromDays(14),
            AllowInsecureHttp = true
        ;

我该怎么做?

请注意,我的问题与 adding extra claims 不同。

【问题讨论】:

发现我的问题重复了:***.com/q/24078905/361100 【参考方案1】:

这就是解决方案:

public override async Task TokenEndpoint(OAuthTokenEndpointContext context)

    context.AdditionalResponseParameters.Add("username", "user@mail.com");

    return Task.FromResult<object>(null);

【讨论】:

以上是关于在 ASP.NET WebApi 2 中自定义承载令牌 JSON 结果的主要内容,如果未能解决你的问题,请参考以下文章

没有身份的 ASP.NET Core 2.0 承载身份验证

Asp.Net Web API 2第十课——使用OWIN自承载Web API

ASP.Net MVC 2 中自定义成员资格提供程序中的角色分组

如何在 asp.net web api 2 中自定义对我自己的一组表的身份验证?

在 ASP.Net 应用程序上结合 ADFS 身份验证和 JWT 承载

我可以在 asp.net(vb) 中自定义 ajax 文件上传吗?