加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > asp.Net > 正文

ASP.NET Web Api:如何使用URL参数传递访问令牌(oAuth 2.0)?

发布时间:2020-12-16 00:46:13 所属栏目:asp.Net 来源:网络整理
导读:你有什么想法可以使用,一个access_token生成的默认asp.net web api 2 OAuth 2授权机制,在url参数中。目前,我可以通过发送带有Authorization标题的请求来成功地授权,如下所示: Accept: application/jsonContent-Type: application/jsonAuthorization: Be
你有什么想法可以使用,一个access_token生成的默认asp.net web api 2 OAuth 2授权机制,在url参数中。目前,我可以通过发送带有Authorization标题的请求来成功地授权,如下所示:
Accept: application/json
Content-Type: application/json
Authorization: Bearer pADKsjwMv927u...

我想要的是通过URL参数启用授权:

https://www.domain.com/api/MyController?access_token=pADKsjwMv927u...

解决方法

嗯 – 我同意标题是一个更好的选择 – 但是当然,需要查询字符串的情况。 OAuth2规范也是这样定义的。

无论如何 – 这个功能内置在Katana OAuth2中间件中:

http://leastprivilege.com/2013/10/31/retrieving-bearer-tokens-from-alternative-locations-in-katanaowin/

public class QueryStringOAuthBearerProvider : OAuthBearerAuthenticationProvider
{
    readonly string _name;

    public QueryStringOAuthBearerProvider(string name)
    {
        _name = name;
    }

    public override Task RequestToken(OAuthRequestTokenContext context)
    {
        var value = context.Request.Query.Get(_name);

        if (!string.IsNullOrEmpty(value))
        {
            context.Token = value;
        }

        return Task.FromResult<object>(null);
    }
}

接着:

var options = new JwtBearerAuthenticationOptions
{
    AllowedAudiences = new[] { audience },IssuerSecurityTokenProviders = new[]
        {
            new SymmetricKeyIssuerSecurityTokenProvider(
                issuer,signingKey)
        },Provider = new QueryStringOAuthBearerProvider(“access_token”)
};

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读