Liferay 7.4 OpenID Connect 作为 Azure B2C 的 SP

Posted

技术标签:

【中文标题】Liferay 7.4 OpenID Connect 作为 Azure B2C 的 SP【英文标题】:Liferay 7.4 OpenID Connect as SP for Azure B2C 【发布时间】:2021-10-20 13:33:10 【问题描述】:

我正在尝试通过 OpenId Connect 将 Liferay 配置为具有 Azure B2C IdP 的 SP。

我的问题是我无法在门户登录过程中处理 Liferay 启动的哪种 OAuh/oidc 流。在 Liferay 中配置 OpenID Connect Provider 时的第一个登录请求(并在登录页面上选择 openid connect)是对您的授权 URL 的重定向,Liferay 在 URL 中设置了 response_type=code。没关系,Azure B2C 可以处理它,向我询问用户/通行证。

但是,当 IdP 使用代码响应时(在成功登录后),如协议定义,Liferay 会尝试解析它,就像它是 JWT 访问令牌一样。但不是吗。因为这是 Liferay 需要验证的代码,以请求身份验证令牌端点的令牌(在 Liferay 的 OpenID Connect Provider 部分中配置)。

所以我在 Liferay 登录页面上收到了内部错误。

我已遵循此程序, https://help.liferay.com/hc/en-us/articles/360028711312-Authenticating-with-OpenID-Connect

提前致谢!

【问题讨论】:

【参考方案1】:

B2C 配置为here。

B2C 范围通常是 openid 和 offline_access。

您是否创建了 B2C application?

【讨论】:

【参考方案2】:

终于发现 Liferay 需要实现 user_info 端点才能使用 openid。 这很少见,因为它实际上不是必需的。我的意思是,Liferay 在调用授权后转到 user_info 端点,以获取用户的电子邮件地址,即使此信息在第一个授权令牌中。

无论如何,解决方案是在 B2C 中实现 user_info,所以 Liferay 现在运行良好。

【讨论】:

以上是关于Liferay 7.4 OpenID Connect 作为 Azure B2C 的 SP的主要内容,如果未能解决你的问题,请参考以下文章

微信服务号获得openid 跟用户信息

Liferay:如何配置 Liferay 门户

Liferay 7:Liferay内部博客地址

我们如何在 liferay7 中覆盖 liferay 模块?

liferay 7 中 liferay-portlet.xml 的等效文件是啥?

liferay 7 - 如何从默认的 liferay 徽标更改为公司徽标?