使用 quarkus 使用 openid 对 twitch 进行身份验证

问题描述

我的目标是使用 Twitch 来识别我应用中的用户

什么有效:我可以通过以下配置使用 Google as an identity provider

quarkus.oidc.auth-server-url=https://accounts.google.com
quarkus.oidc.token.issuer=https://accounts.google.com
quarkus.oidc.client-id=<my google client id>
quarkus.oidc.credentials.secret=<my google secret>

quarkus.oidc.application-type=web-app
quarkus.oidc.authentication.redirect-path=/myResource
quarkus.http.auth.permission.authenticated.paths=/myResource
quarkus.http.auth.permission.authenticated.policy=authenticated

一切都按预期进行。 但是将配置更改为使用 Twitch as the identity provider 会导致错误

新配置:

quarkus.oidc.auth-server-url=https://id.twitch.tv/oauth2
quarkus.oidc.client-id=<my twitch client id>
quarkus.oidc.credentials.secret=<my twitch secret>
quarkus.oidc.credentials.client-secret.method=post

quarkus.oidc.application-type=web-app
quarkus.oidc.authentication.redirect-path=/myResource
quarkus.http.auth.permission.authenticated.paths=/myResource
quarkus.http.auth.permission.authenticated.policy=authenticated

错误
Exception during the code to token exchange: Bad Request: {"status":400,"message":"missing client id"}

在我(通过 Twitch)重定向/myResource

后抛出此异常

我使用 Google 和 Twitch 手动完成了这个过程,发现 Twitch 想要客户端 ID、客户端机密等作为查询参数。虽然谷歌希望它们在 POST 正文中。 发送到 Twitch 的工作 POST 请求如下所示: https://id.twitch.tv/oauth2/token?client_id=<my client id>&client_secret=<my secret>&grant_type=authorization_code&redirect_uri=http://localhost:8080/myResource&code=s8qhj9asftwnduvqeeuuo9yfycglpt

从请求中删除 client_id 给了我与上面完全相同的错误。 在那之后,我一直在寻找是否有一个配置属性来改变它,但我没有找到。 Twitch 是没有使用官方的 oidc 规范还是 quarkus 缺少适当的配置属性

感谢您的帮助,
约恩

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)