收藏
回答

WeChat作为IDP未能按照预期在浏览器中设置session cookie

https://developers.weixin.qq.com/doc/oplatform/Website_App/WeChat_Login/Wechat_Login.html

我们的应用是使用微软云Azure的B2C作为身份验证提供程序的,然后结合了WeChat作为Azure B2C的IDP,使我们的用户可以使用WeChat登录我们的应用。在使用过程中发现WeChat作为IDP未能按照预期在浏览器中设置session cookie,导致WeChat无法记录此前成功登录的用户信息,在后续需要再次验证用户身份信息的时候,无法实现Single Sign On。具体的表现如下:

首先向Azure B2C的authorization endpoint发起请求,申请id token。扫码成功验证微信账户后,如下图Fiddler的抓包显示,我们可以看到WeChat成功返回了Authorization Code,但是并没有在这个响应中设置session cookie。

所以当我们紧接的下一个请求发起申请access token时,由于浏览器cookie中没有保存用户的身份信息,WeChat会再次提示用户登录验证WeChat账户,Fiddler Trace示例如下:

以使用Google作为Azure B2C的IDP做对比,Google在第一次返回authorization code的同时,会在浏览器设置session cookie,示例如下:

所以Google IDP在收到紧接的申请access token的请求后,可以读取cookie中的用户身份信息,直接颁发access token,不需要再次登录验证:

由于session management是由IDP管理的,Azure B2C不会做干预,所以请协助调查确认:

  1. WeChat IDP没有设置session cookie的行为是否符合预期?
  2. 如何能够实现SSO?
回答关注问题邀请回答
收藏
登录 后发表内容