是否可以仅使用 Keycloak 进行身份验证?

Posted

技术标签:

【中文标题】是否可以仅使用 Keycloak 进行身份验证?【英文标题】:Is it possible to use the Keycloak for authentication only? 【发布时间】:2021-11-14 17:39:43 【问题描述】:

我想使用 JWT 进行身份验证,所以我尝试使用 Keycloak 来获取 Bearer 令牌。我的问题是,当我在请求中设置 scope=openid 时。响应包含 access_tokenid_token 作为打击:


    "access_token": "eyJAlW7lLfxPta...MS85g",
    "expires_in": 300,
    "refresh_expires_in": 1800,
    "token_type": "Bearer",
    "id_token": "eyJhbGciOmQtMzJhOThS...Htm2OSGo9pVs-CWBJGaPC2Z2ib6FSSckzTxA",
    "not-before-policy": 0,
    "session_state": "d76a27af-3780-4843-9c6d-32a98c1f6625",
    "scope": "openid"

据我所知,access_token 用于授权,我不需要它。我只需要id_token 进行身份验证。是否可以从 Keycloak 响应中删除 access_token,或者它只是一个全局 OIDC 规则,id_token 总是带有 access_token?我是否使用了正确的令牌或身份验证必须由 access_token 完成?

【问题讨论】:

【参考方案1】:

OpenID Connect (OIDC) 是建立在 OAuth 2.0 之上的身份验证协议。

    使用 OAuth 2.0,用户可以通过授权服务器进行身份验证并为您获取 access token。 使用 OIDC,他们还可以为您提供一个名为 ID token 的令牌。

所以我想说,当您使用 OIDC 协议时,您不能省略访问令牌,因为底层 OAuth 2.0 协议会生成它。

来源:https://developer.okta.com/docs/guides/validate-id-tokens/overview/

【讨论】:

感谢您的明确答复。是否有任何 Oauth2 提供者产生 JWT 令牌?我发现的所有提供程序都与 Oauth 兼容,并且正如您提到的那样,生成 access_token 和 id_token。我正在搜索仅用于身份验证的最佳 Bearer 令牌。

以上是关于是否可以仅使用 Keycloak 进行身份验证?的主要内容,如果未能解决你的问题,请参考以下文章

是否可以在Keycloak中使用自定义身份验证逻辑?

如何在 Keycloak 中使用手机号码对用户进行身份验证

使用 Keycloak 进行微服务身份验证

Keycloak 使用不同的客户端重新验证经过身份验证的用户

Keycloak Angular 2 - 检查身份验证状态 Keycloak 对象

KeyCloak 应该用作我的用户的身份验证服务器吗?