Azure AD B2C - 如何为id_token交换用户名/密码?

时间:2017-11-16 04:19:30

标签: c# azure-ad-b2c

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

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

在Fiddler中,我看到POST到ourtenant.onmicrosoft.com,其中包含正确的用户名和密码。响应机构是" {" 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,如果是这样,我只是想了解它存储的内容以及它受到保护的强大程度。

1 个答案:

答案 0 :(得分:1)

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

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

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