我使用Azure AD应用程序进行应用程序身份验证和用户身份验证。现在,在同一个AD租户中,任何注册的应用程序都可以使用用户或应用程序令牌调用我的应用程序,即使我没有添加/白名单的调用者应用程序。这与几年前我们必须在我们的应用注册权限中添加委托权限以允许任何应用通过令牌呼叫我们的情况相反。
我的Asp.Net核心应用程序使用下面的代码片段来设置身份验证。
services.AddAuthentication(sharedOptions =>
{
sharedOptions.DefaultScheme = JwtBearerDefaults.AuthenticationScheme;
})
.AddJwtBearer((option) =>
{
option.Audience = audience;
option.Authority = authority;
option.TokenValidationParameters = new TokenValidationParameters()
{
ValidateAudience = true,
};
});
请告诉我为什么不再需要在Azure AD应用程序中添加委派权限?
谢谢
您可能已经达到了Azure AD的一项功能。任何租户中的应用都可以获取任何租户中API的访问令牌,只要他们知道其标识符(租户ID +客户端ID /应用ID URI)即可。令牌将不包含任何委派的权限或应用程序权限,没有办法获得那些而不需要他们+当然有人同意他们。但它将是有效的。
您需要在API中检查调用方是否具有调用API的适当权限。检查令牌是否包含有效的委派权限或应用程序权限。委托权限将在scp声明中以空格分隔,并且应用程序权限将位于角色声明中的数组中。未能执行这些检查会使您的API容易受到攻击。