在对从任何客户端应用程序到WEB API的令牌请求进行身份验证时需要帮助。我们已经在Azure AAD中注册了我们的web API具有多租户应用程序。我的客户端应用程序已经在不同的租户中注册,通过传递请求头的访问令牌部分,能够从AAD.while获得访问令牌,向我们的端点发出Http请求,我们收到了401未经授权的异常。在浏览多租户场景时,我发现原因是禁用了ValidateIssuer并自定义了处理程序。
·在实现WindowsAzureActiveDirectoryBearerAuthentication.时是否有任何自定义处理程序我发现很多人都在用OpenIDConnect。但是对于WEB,我们使用的是,即在中是否有任何等效的事件用于验证访问令牌并告知用户已通过身份验证?
·有没有更好的验证访问令牌和告知用户是有效用户的标准?
·我们可以通过将持有者令牌传递给WEBAPI授权过滤器来获取用户的声明吗?或者httprequest对象声明是否会获得用户信息,如给定的名称、租户名称、对象ID (esp.本地主机调试场景。),如果我们能获得这些信息,我们就可以有自己的验证逻辑。
请让我们知道这种方法是否是验证用户身份的最佳实践。
发布于 2017-06-12 09:03:46
当您无法在配置中指定预定义的颁发者列表,并且需要一些运行时逻辑来确定您是否信任令牌中显示的颁发者时,这将非常有用:
TokenValidationParameters = new System.IdentityModel.Tokens.TokenValidationParameters
{
IssuerValidator = (issuer, token, tvp) =>
{
if (db.Issuers.FirstOrDefault(b => (b.Issuer == issuer)) == null)
return issuer;
else
throw new SecurityTokenInvalidIssuerException("Invalid issuer");
}
}
您可以对访问令牌进行解码,以获得基本的用户信息,如family_name/given_name,但只能通过使用用户标识获取访问令牌来获得这些信息。
https://stackoverflow.com/questions/44455908
复制