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