UseWindowsAzureActiveDirectoryBearerAuthentication如何验证Azure Active Directory Bearer令牌?

时间:2017-09-03 08:44:46

标签: c# asp.net-web-api oauth-2.0 azure-active-directory owin-middleware

我正在使用Web API进行AzureAD身份验证。每件事对我来说都很好。我很好奇,下面的代码如何验证Azure Active目录令牌。

app.UseWindowsAzureActiveDirectoryBearerAuthentication(
    new WindowsAzureActiveDirectoryBearerAuthenticationOptions{
        Audience = ConfigurationManager.AppSettings["ida:Audience"],
        Tenant = ConfigurationManager.AppSettings["ida:Tenant"]
    }
);

Q1)是否会为webapi请求调用azure活动目录?

Q2)是否持有任何密钥(私钥,公钥等)?如果是,那么令牌是什么?如何以及在哪里?

Q3)它如何解密承载令牌?

Q4)是否足够安全以取决于块?

1 个答案:

答案 0 :(得分:2)

  

Q1)是否会为webapi请求调用azure活动目录?

是的,当应用启动时,它会从https://login.microsoftonline.com/common/discovery/keys获取公钥。

  

Q2)是否持有任何密钥(私钥,公钥等)?如果是,那是什么   是代币吗?如何以及在哪里?

见上文,它将公钥存储在内存中。

  

Q3)它如何解密承载令牌?

解码令牌。令牌未加密,只是base64编码和数字签名。中间件解码令牌并使用之前获得的公钥检查签名是否有效。

  

Q4)是否足够安全以取决于块?

基本上,您拥有的设置足以支持单租户API。当然,一个好主意是在Azure AD中的API清单中定义委派/应用权限,这样您就可以使用API​​为应用程序提供不同级别的访问权限。