Keycloak和Spring Boot身份验证错误

3

我在 Docker 容器中运行 Keycloak,并从 IDEA 运行我的 Spring Boot 应用程序。 当我尝试在 Keycloak 表单中登录时,出现错误。

failed to turn code into token
status from server: 401
{"error":"unauthorized_client","error_description":"Client secret not provided in request"}

异常信息如下:

org.keycloak.adapters.springsecurity.KeycloakAuthenticationException: 无效的授权头,详见 WWW-Authenticate 头部获取更多细节

我在 Keycloak 管理面板中配置了我的用户和角色。

以下是属性文件内容:

keycloak.realm=myrealm
keycloak.resource=myclient
keycloak.auth-server-url=http://localhost:8081/auth
keycloak.ssl-required=external
keycloak.public-client=true
keycloak.principal-attribute=preferred_username
keycloak.credentials.secret=eba15252-we3r-423e-8df0-87f1da4a7c04
keycloak.use-resource-role-mappings=true

请问有人能够帮忙解决这个问题吗?

更新:如果我不使用Docker运行keycloak,它是可以正常工作的。


你能否请提供你的请求内容,你的错误信息很清晰。 - Toerktumlare
请在管理员面板中发布您的客户端配置。 - Aritz
尝试使用 keycloak.public-client=false。我假设“myclient”不是公共的(否则不需要密码)。 - Robin
1个回答

0

很明显,在POST请求中,您没有输入client_secret。您应该能够从Keycloak管理员的“客户端”部分获取此信息。这样您的请求应该看起来像这样。

curl --location --request POST '{{KEYCLOAK_BASE_URL}}/auth/realms/{{KEYCLOAK_REALM}}/protocol/openid-connect/token' \
--data-urlencode 'grant_type=password' \
--data-urlencode 'client_id=web-app-client' \
--data-urlencode 'username=user@gmail.com' \
--data-urlencode 'password=123123' \
--data-urlencode 'client_secret=ea05b21c-fcb4-412d-acb7-c888ba7f996d' \
--data-urlencode 'scope=openid phone address'

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接