我正在使用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应用中添加委派权限?
发布于 2019-04-13 09:49:09
你可能已经使用了Azure AD的其中一个功能。任何租户中的应用程序都可以为任何租户中的API获取访问令牌,只要他们知道其标识符(租户id +客户端id /应用程序id URI)。令牌将不包含任何委托权限或应用程序权限,如果不需要这些权限或应用程序权限,它就无法获得这些权限,当然也不会有人同意。但它将在其他情况下有效。
您需要在您的API中检查调用者是否有适当的权限来调用您的API。检查令牌是否包含有效的委派权限或应用程序权限。在scp声明中,委派权限将以空格分隔,而在角色声明中,应用程序权限将位于数组中。如果不执行这些检查,可能会使您的API容易受到攻击。
https://stackoverflow.com/questions/55662330
复制相似问题