Keycloak OpenID Connect

时间:2019-02-13 19:15:20

标签: openid-connect keycloak oidc

我是OpenID Connect和密钥斗篷的新手。

我有两个问题: 在这种情况下,对于我的应用程序的每个API调用,我的应用程序都必须向openid连接提供程序(OP)-Keycloak进行验证吗?这可能会给OP带来很多负担。或者,我的应用程序是否必须依赖于用户首次尝试连接到我的应用程序时获得的令牌的有效期?

如果我的应用程序(RP)依赖令牌到期,那么在OP处撤销用户将如何工作?我的应用程序仅在令牌到期后才知道撤销吗?OP会在用户被撤销时通知已注册的应用程序吗?

2 个答案:

答案 0 :(得分:1)

否,您的应用程序可以使用Keycloak通过其API公开的发行领域的公钥来脱机验证令牌。

您可以在文档中找到:https://www.keycloak.org/docs/latest/securing_apps/index.html#validating-access-tokens

在这种情况下,您必须依靠令牌的到期时间。通常,当到期时间较短时,这应该没什么大问题。当您的应用程序在本地验证令牌时,我目前不知道任何解决方案来获取有关吊销的通知。如果短的令牌到期时间不足以缓解此问题,则必须为每个请求调用令牌自省端点。

答案 1 :(得分:0)

针对OP的验证取决于您的确切要求和所使用的令牌类型。如果要使最终用户信息与访问令牌相关,则必须调用用户信息端点。仅当访问令牌有效时才能执行此操作。自省端点只能用于验证访问令牌。

但是,如果您使用的是JWT访问令牌,则可以依赖JWT验证,而无需调用任何其他API。但是,当然,您需要令牌签名证书数据。这可能是一次请求,因为证书过渡不经常发生。

关于用户吊销,除了使用标准API(令牌自省,userinfo端点)以外,没有其他方法可以检测到此问题。甚至JWT验证都不允许您验证这种情况。但是,缩短令牌寿命(例如:30分钟)并使用刷新令牌可以使您检测到这种情况。如果关联用户被吊销,刷新令牌请求必须失败。