【问题标题】:Azure AD B2C - how is username/password exchanged for id_token?Azure AD B2C - 用户名/密码如何交换 id_token?
【发布时间】:2018-04-29 12:17:27
【问题描述】:

我们正在开发一个项目,该项目专门使用 Azure AD B2C 对用户进行身份验证。我正在准备一些有关登录流程如何工作的文档,并在 Fiddler 中进行跟踪。

对于将用户名和密码正确提交到 login.microsoftonline.com 呈现的表单的用户,我知道他们会收到一个 id_token 作为响应,然后他们会将其呈现给我们的网站以验证其身份验证并建立会话。

在 Fiddler 中,我看到了到 ourtenant.onmicrosoft.com 的 POST,其中包括正确的用户名和密码。响应正文是 "{"status":"200"}" 带有一堆 set-cookie 标头(为简洁起见省略了内容)。

x-ms-cpim-slice
x-ms-cpim-dc
x-ms-cpim-cache
x-ms-cpim-trans

在此之后,我看到了包含上述 cookie 的 ourtenant.onmicrosoft.com 的 GET,并且ourtenant.onmicrosoft.com 以包含隐藏字段中的 id_token 的 HTML blob 进行响应。

我的问题是,简单来说,Azure AD B2C 如何将第一个 POST 中的正确用户名/密码条目与为响应进行中的 GET 提供的 id_token 相关联?

我的菜鸟猜测是它使用 x-ms-cpim-cache cookie,如果是这样,我只想了解它存储的内容以及它的保护程度。

【问题讨论】:

    标签: c# azure-ad-b2c


    【解决方案1】:

    就合同而言,Cookie 是 B2C 内部的。由于它们是由 B2C 服务生成和消费的,因此内部结构可以随时更改。

    密码在用户提供密码的同一请求中得到验证,然后被丢弃。

    B2C 使用 cookie 跟踪用户在身份验证过程中取得的进展。此类 cookie 已加密。除此之外,说明这些 cookie 中的内容也无济于事。今天,它可能是一个 GUID,允许 B2C 在数据库中存储一些状态,明天它可能是一些短期安全令牌,等等。

    【讨论】:

    • 非常感谢一位合格评论者的回复,我确信它很强大,我并不特别担心,但它确实让我停下来思考。我看到了真正的凭据,并且出现了一个符合标准的好 OAuth2 令牌,但中间的 cookie 管理似乎是一个故意的谜。到目前为止,我认为 B2C 很棒,但我对身份验证流程的某些部分是专有的并且随时可能发生变化的情绪不太激动。当我们宝贵的数据进入云端时,我们基本上信任这个框架作为我们的全球看门人。
    猜你喜欢
    • 1970-01-01
    • 2020-08-12
    • 2019-07-14
    • 1970-01-01
    • 2018-01-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多