问题描述
问题:用户不在上下文中(无用户会话)的服务是否可以通过 Microsoft 身份验证器提示用户进行授权。
您可以假设客户端是 Azure AD 中的注册应用程序(具有范围、重定向 URL 等),并针对客户端凭据、身份验证代码 (OAuth2) 和 OIDC 流进行设置。
背景/细节
上面的问题是需要什么的关键,只是在用户当前不在上下文中时提示用户授权客户端进行操作。下面是在 CIBA 类型流中的情况,但 CIBA 不是必需的。
作为前一步,客户端通过 Azure AD 的 OIDC 身份验证代码流向用户发送以获取 id 令牌。
是否可以通过后续的反向通道流程来获取授权码?这种情况通常用于用户无法与授权服务器创建会话的情况(例如在汽油泵上)。 例如,有一个名为 CIBA 的开放 ID 流,请参阅 Client Intiated Backchannel Authentication
第 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 - 通过 API 提供商的 CIBA):
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>
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)