密钥保护公共客户端和授权
我们正在使用带有Jetty的钥匙斗篷适配器,以使用Keycloak进行身份验证和授权。根据 OIDC 身份验证流程的密钥保护文档:
此流的另一个重要方面是公共客户端与机密客户端的概念。机密客户端在将临时代码交换为令牌时,需要提供客户端机密。公共客户端不需要提供此客户端密码。只要严格执行HTTPS,并且您对为客户端注册的重定向URI非常严格,公共客户端就可以完全没问题。
HTML5/JavaScript 客户端始终必须是公共客户端,因为无法以安全的方式将客户端密钥传输给它们。
我们有连接到Jetty并使用身份验证的网络应用程序。因此,我们创建了一个公共客户端,它对于webapp / REST身份验证非常有用。
问题是,一旦我们启用授权,客户端类型就会从“公共”转换为“机密”,并且不允许将其重置为“公共”。现在,我们在汤里。由于授权,我们不能有公共客户端,我们不能将Web应用程序连接到机密客户端。
这似乎与我们相矛盾。任何想法为什么客户需要保密授权?对此有任何帮助,我们如何克服这个问题?
谢谢。