我正在使用BearerTokenAuthentication
。
在Azure Portal
我激活Azure Active Directory
以防止第三方访问我部署的网站。
但是,在激活Active Directory
功能时,Azure会为每个请求附加Cookie
,这会导致ClaimsPrincipal包含来自Active Directory的Cookie的数据,而不是包含在Bearer Token I中的数据随身携带。
这就是我发现未从持有人令牌中收集主体的方式:
[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
?
答案 0 :(得分:0)
尝试将以下内容添加到您的网络API配置
config.SuppressDefaultHostAuthentication();
忽略cookie,
config.Filters.Add(new HostAuthenticationFilter("Bearer"));
激活承载认证类型。