我正在使用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)是否足够安全以取决于块?
答案 0 :(得分:2)
Q1)是否会为webapi请求调用azure活动目录?
是的,当应用启动时,它会从https://login.microsoftonline.com/common/discovery/keys获取公钥。
Q2)是否持有任何密钥(私钥,公钥等)?如果是,那是什么 是代币吗?如何以及在哪里?
见上文,它将公钥存储在内存中。
Q3)它如何解密承载令牌?
解码令牌。令牌未加密,只是base64编码和数字签名。中间件解码令牌并使用之前获得的公钥检查签名是否有效。
Q4)是否足够安全以取决于块?
基本上,您拥有的设置足以支持单租户API。当然,一个好主意是在Azure AD中的API清单中定义委派/应用权限,这样您就可以使用API为应用程序提供不同级别的访问权限。