oauth - 使用 OpenId Connect 有条件登录

标签 oauth keycloak openid-connect

我一直在阅读有关 openid connect 的内容,并使用 Keycloak 做了一些实验。

我的问题是:是否可以向 OpenId Connect 服务器添加条件登录?

这就是我正在努力做的事情。我使用 Keycloak 作为身份提供者。客户允许他们的用户通过我的应用程序登录。但我不希望任何人访问这些客户端;只有付费订阅的人才能访问客户端。如果用户尝试登录,但尚未支付订阅费用,Keycloak 应重定向到用户可以购买订阅计划的页面。

如果 OpenId Connect 无法做到这一点,是否有办法使用 Keycloak 做到这一点?

谢谢

最佳答案

这里有两个问题,这是一个通用模式,而不是特定于 Keycloak:

  • 验证用户身份
  • 用户是否有权使用该应用

最标准的方法是使用 2 个用户数据源:

  • 登录后从您自己的数据中的访问 token 查找用户
  • 查看他们是否已付款
  • 如果没有,则重定向至订阅计划页面

我的博客文章 User Data Management可能会给你一些想法。

可能的实现

登录后,UI 可以调用 API 端点来获取访问 token 中用户的声明:

  • GET/api/userclaims/current

响应可以包含一个带有来自多个数据源的字段(声明)的对象,而不仅仅是 token 。这是sample claims object我的。

一种有用的技术是在您的 API 首次收到访问 token 时进行声明收集,然后使用相同的 token 缓存后续 API 调用的结果:

关于oauth - 使用 OpenId Connect 有条件登录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62868265/

相关文章:

python - 使用 python-oauth2 的 Evernote OAuth 示例

html - 有没有办法为我的自定义 Keycloak 电子邮件主题添加样式?

Azure AD Oauth2/OpenID Connect Web 应用身份验证问题

objective-c - 带 iOS 的 Linkedin SDK - 身份验证失败

android - 使用 Facebook 登录并在移动应用程序中进行用户注册

java - 从 Spring Boot 应用程序检查密码是否在 Keycloak 中有效

themes - 扩展 Keycloak 主题

openid - IdentityServer4 为什么我们需要发现端点

python - 如何获取证书的 SHA1 指纹

java - 将 tokenservice 添加到端点配置时出现 Spring OAuth Bean 异常