Asp.net
ASP.NET Web Api:如何使用 URL 參數傳遞訪問令牌(oAuth 2.0)?
您知道我可以如何在 url 參數中使用由預設 asp.net web api 2 OAuth 2 授權機制生成的 access_token。目前,我可以通過發送帶有 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”) };