Azure active directory azure中的自定义OAuth作用域

Azure active directory azure中的自定义OAuth作用域,azure-active-directory,Azure Active Directory,通读:尝试理解作用域。根据规范,范围是在auth服务器中定义的,但不需要绑定到单个应用程序(我推断)。当我使用Azure时,自定义范围似乎与应用程序注册(我的API)相关联。是这样还是我遗漏了什么?是否有一种方法可以定义不与应用程序(或多个应用程序)绑定的范围 例如,Directory.Read.All scope,我可以想象一个资源服务器后面托管的多个API在图中实现所有目录服务(不是一个?) 范围对我来说是一个模糊的概念,所以如果我的问题没有意义,我深表歉意 当我使用Azure时,自定义范围

通读:尝试理解作用域。根据规范,范围是在auth服务器中定义的,但不需要绑定到单个应用程序(我推断)。当我使用Azure时,自定义范围似乎与应用程序注册(我的API)相关联。是这样还是我遗漏了什么?是否有一种方法可以定义不与应用程序(或多个应用程序)绑定的范围

例如,Directory.Read.All scope,我可以想象一个资源服务器后面托管的多个API在图中实现所有目录服务(不是一个?)

范围对我来说是一个模糊的概念,所以如果我的问题没有意义,我深表歉意

当我使用Azure时,自定义范围似乎与应用程序绑定在一起 注册(我的API)。是这样还是我遗漏了什么?是 有一种方法可以定义与应用程序(或多个应用程序)无关的作用域 一个应用程序)

获取令牌时,必须指定
范围
值。正如您所想,您的自定义范围实际上是公开受Azure保护的应用程序。通常它被用作后端应用程序。使用前端应用程序访问它时,必须指定后端应用程序的范围。通常是:
api://{back-end-app-client-api}/scope-name

在Directory.Read.All范围内,我可以想象托管了多个API 在资源服务器后面,实现图形中的所有目录服务 (不是吗?)

不,不是你想的那样。您应该将要访问的api放在作用域中。例如,如果您想访问MS graph api,可以将
https://graph.microsoft.com/.default
。如果要访问自定义api,可以在
api://{back-end-app-client-api}/scope-name
中输入

访问令牌是根据您想要访问的api受众发布的,它是唯一的!请参阅:


关于这个问题,这个规范()说“在一般情况下,“aud”值是一个区分大小写的字符串数组,每个字符串都包含一个StringOrURI值。”查看azure docs aud是单数字符串还是uri?(api的api id)。是否没有办法要求多个作用域属于两个不同的API(最终结果是多个作用域和两个受众)?