[英]Azure Active Directory causes JWT token to be ignored
我正在使用BearerTokenAuthentication
。
在Azure Portal
我激活了Azure Active Directory
以防止第三方訪問我部署的網站。
但是,在激活Active Directory
功能時,Azure會為每個請求附加Cookie
,這會導致ClaimsPrincipal包含來自Active Directory的Cookie的數據,而不是我隨其發送的Bearer Token中包含的數據。
這就是我發現未從Bearer令牌收集主體的方法:
[RoutePrefix("users")]
public class UsersController : ApiController
{
[Authorize]
[Route("me/claims")]
public IHttpActionResult Me()
{
var caller = (ClaimsPrincipal)User;
return Ok(caller.Claims.Select(claim => new KeyValuePair<string, string>(claim.Type, claim.Value)));
}
}
這些是請求標頭:
accept:application/json
Accept-Encoding:gzip, deflate, sdch, br
Accept-Language:de-DE,de;q=0.8,en-US;q=0.6,en;q=0.4
authorization:Bearer [Token]
Connection:keep-alive
Cookie:ARRAffinity=[AzureActiveDirectoryToken]
如何確保使用的唯一身份驗證機制是Bearer Token
?
嘗試將以下內容添加到您的web api配置中
config.SuppressDefaultHostAuthentication();
忽略cookie,和
config.Filters.Add(new HostAuthenticationFilter("Bearer"));
激活承載認證類型。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.