你有什么想法可以使用,一个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中间件中:
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”) };