客户端凭据授予中的Microsoft Azure OAuth ID令牌

时间:2020-07-28 14:35:37

标签: azure oauth oauth-2.0 azure-active-directory microsoft-graph-api

理想情况下,我希望能够为我的应用授予管理员 application 权限,并以相同的流程登录到所述应用。这可能吗?

我目前使用code grant flow进行身份验证

然后我使用client credentials flow进行授权

是否可以将两者合并为一个流程?

如果以前未授予客户令牌,则我将第一个立即重定向到第二个,但是从UX角度来看,它不是最吸引人的流程。

如果我可以向客户端授予响应添加一个完美的ID令牌(我只需要同意的管理员的UPN),但这似乎是不可能的。

一个关键要求是我的应用程序对整个组织进行更改时的应用程序权限-在同一流程中获得被授予者的ID只是UX优化。

也许OpenID Connect flow可以做到吗?

1 个答案:

答案 0 :(得分:1)

是否可以将两者合并为一个流程?

不,这是两个不同的身份验证流程。

对于授权代码流,它用于在大多数应用程序类型中执行身份验证和授权,包括单页应用程序,Web应用程序和本机安装的应用程序。该流使应用程序能够安全地获取可用于访问由Microsoft身份平台端点保护的资源的access_tokens,以及刷新令牌以获取其他access_tokens和已登录用户的ID令牌。此流程通常用于与用户交互的场景中。

对于客户端凭证流,是管理员直接向应用程序本身授予权限。当应用程序向资源提供令牌时,资源将强制应用程序本身具有执行操作的权限。这种类型的授予通常用于必须在后台运行并且不需要与用户立即进行交互的服务器到服务器的交互。通常在守护程序中使用,该守护程序只能获取用于访问资源的access_token。

也许通过OpenID Connect流可以做到吗?

这是用户登录的地方。通常,使用委派权限,所以这是不可能的。

因此,总而言之,在使用客户端凭据流时,您无法获取ID令牌,因为流中没有用户交互。