0

问题:用户不在上下文中(无用户会话)的服务是否可以通过 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>

4

0 回答 0