问题:用户不在上下文中(无用户会话)的服务是否可以通过 Microsoft 身份验证器提示用户进行授权。
您可以假设客户端是 Azure AD 中的注册应用程序(具有范围、重定向 url 等),并为客户端凭据、身份验证代码 (OAuth2) 和 OIDC 流进行了设置。
背景/细节
上面的问题是需要什么的关键,只是在用户当前不在上下文中时提示用户授权客户端进行操作。以下是在 CIBA 类型流程中的外观,但 CIBA 不是必需的。
作为前置步骤,客户端通过 OIDC 身份验证代码流通过 Azure AD 发送用户以获取 id 令牌。
是否可以进行后续的反向通道流程以获取身份验证码?此场景通常用于用户无法与授权服务器创建会话的情况(例如在汽油泵处)。例如,有一个名为 CIBA 的开放 ID 流,请参阅客户端发起的反向通道身份验证
第 1 部分:(准备步骤 - 这已经有效)
mermaid.initialize({startOnLoad:true});
<script src="https://unpkg.com/mermaid@8.0.0/dist/mermaid.min.js"></script>
<div class="mermaid">
sequenceDiagram
participant U as User
participant C as Client
participant AAD as AzureAD
U->>AAD : /authorize
AAD-->U : User authorizes request with Microsoft Authenticator
AAD-->>U : redirect(id_token)
U->>C : redirect_uri(id_token)
</div>
第 2 部分(选项 1 - CIBA 到 AAD):
mermaid.initialize({startOnLoad:true});
<script src="https://unpkg.com/mermaid@8.0.0/dist/mermaid.min.js"></script>
<div class="mermaid">
sequenceDiagram
participant U as User
participant C as Client
participant AAD as AzureAD
C->>AAD : /bc-authorize(id_token)
AAD->>U : prompt (Authenticator)
U->>AAD : Authorize
AAD->>C : AuthorizeComplete
</div>
第 2 部分(选项 2 - CIBA 通过 API Provider):
mermaid.initialize({startOnLoad:true});
<script src="https://unpkg.com/mermaid@8.0.0/dist/mermaid.min.js"></script>
<div class="mermaid">
sequenceDiagram
participant C as Cliend
participant AAD as Azure AD
participant AP as "API Provider"
C->>AP : /bc-authorize(id_token)
AP->>AAD : /bc-authorize(id_token)
AAD->>User : prompt (Authenticator)
User->>AAD : Authorize
AAD ->> AP : AuthorizeComplete
</div>