我们正在使用keycloak-adapter与Jetty进行身份验证和授权,使用Keycloak。根据Keycloak doc for OIDC Auth flow:
另一个重要的方面是此流程中公共客户端与机密客户端的概念。当机密客户端交换临时代码以获取令牌时,需要提供客户端密钥。公共客户端不需要提供此客户端密钥。只要严格执行HTTPS并且对客户端注册的重定向URI非常严格,公共客户端就非常好。
HTML5 / JavaScript客户端始终必须是公共客户端,因为没有一种安全传输客户端密钥的方式。
我们有连接到Jetty并使用auth的Web应用程序。因此,我们创建了一个公共客户端,并且对于Web应用程序/ REST身份验证,它运行得非常好。问题在于,一旦启用授权,客户端类型从公共转换为机密,并且不允许将其重置为公共。现在,我们很困扰。由于授权,我们无法拥有公共客户端,也无法将Web应用程序连接到机密客户端。
这对我们来说似乎是矛盾的。您知道为什么客户端需要保密才能进行授权吗?对于如何解决此问题,您能提供任何帮助吗?谢谢。
另一个重要的方面是此流程中公共客户端与机密客户端的概念。当机密客户端交换临时代码以获取令牌时,需要提供客户端密钥。公共客户端不需要提供此客户端密钥。只要严格执行HTTPS并且对客户端注册的重定向URI非常严格,公共客户端就非常好。
HTML5 / JavaScript客户端始终必须是公共客户端,因为没有一种安全传输客户端密钥的方式。
我们有连接到Jetty并使用auth的Web应用程序。因此,我们创建了一个公共客户端,并且对于Web应用程序/ REST身份验证,它运行得非常好。问题在于,一旦启用授权,客户端类型从公共转换为机密,并且不允许将其重置为公共。现在,我们很困扰。由于授权,我们无法拥有公共客户端,也无法将Web应用程序连接到机密客户端。
这对我们来说似乎是矛盾的。您知道为什么客户端需要保密才能进行授权吗?对于如何解决此问题,您能提供任何帮助吗?谢谢。