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