Azure Active Directory导致忽略JWT令牌

时间:2016-08-31 10:46:46

标签: c# asp.net owin azure-active-directory

我正在使用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

1 个答案:

答案 0 :(得分:0)

尝试将以下内容添加到您的网络API配置

config.SuppressDefaultHostAuthentication();

忽略cookie,

config.Filters.Add(new HostAuthenticationFilter("Bearer"));

激活承载认证类型。