2.6. 建议
本节介绍了使用红帽构建的 Keycloak 保护应用程序时的一些建议。
2.6.1. 验证访问令牌 复制链接链接已复制到粘贴板!
复制链接链接已复制到粘贴板!
如果您需要手动验证红帽构建的 Keycloak 发布的访问令牌,您可以调用 Introspection Endpoint。这种方法的缺点是您必须对红帽构建的 Keycloak 服务器进行网络调用。如果您同时存在太多验证请求,这可能会较慢,并可能过载服务器。红帽构建的 Keycloak 发布访问令牌是 JSON Web 令牌(JWT) 数字签名,并使用 JSON Web 签名(JWS) 进行编码。由于它们以这种方式编码,因此您可以使用发布域的公钥在本地验证访问令牌。您可以在验证代码中硬编码域的公钥,也可以使用嵌入在 JWS 中的密钥 ID (KID) 的证书端点 查找并缓存公钥。根据您采用什么语言,有许多第三方库存在,它们可帮助您进行 JWS 验证。
2.6.2. 重定向 URI 复制链接链接已复制到粘贴板!
复制链接链接已复制到粘贴板!
在使用基于重定向的流时,请务必为客户端使用有效的重定向 uris。重定向 uris 应尽量具体。这特别适用于客户端(公共客户端)应用程序。无法这样做可能会导致:
- 打开重定向 - 这使攻击者能够创建像来自您的域的 欺骗链接
- 未授权条目 - 当用户已通过红帽构建的 Keycloak 进行身份验证时,攻击者可以使用一个公共客户端,其中 redirect uris 没有正确配置,在没有用户不了解的情况下通过重定向用户来获取访问权限。
在生产中,Web 应用始终对所有重定向 URI 使用 https。不允许重定向到 http。
还有一些特殊的重定向 URI:
http://127.0.0.1-
此重定向 URI 对原生应用很有用,并允许原生应用在可用于获取授权代码的随机端口上创建 Web 服务器。此重定向 uri 允许任何端口。请注意,对于原生应用,每个 OAuth 2.0 都 不建议使用
localhost,应改为使用 IP 字面127.0.0.1。
urn:ietf:wg:oauth:2.0:oob-
如果您无法在客户端(或浏览器不可用)中启动 Web 服务器,您可以使用特殊的
urn:ietf:wg:oauth:2.0:oobredirect uri。当使用此 redirect uri 时,红帽构建的 Keycloak 会显示带有标题和页面中的代码的页面。应用可以检测浏览器标题已更改,或者用户可以手动将代码复制并粘贴到应用中。使用这个重定向 uri,用户可以使用不同的设备获取代码来粘贴到应用程序。