问题描述
我的目标是使用 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 (将#修改为@)