3个版本
0.1.2 | 2022年7月18日 |
---|---|
0.1.1 | 2022年7月18日 |
0.1.0 | 2022年7月18日 |
#17 in #修复
2.5MB
423 行
Twitch OIDC修复
TL;DR:使用Twitch进行SSO(单点登录)或通用OIDC客户端,只是一个小的桥梁/中间件。 :)
由于Twitch-API并不严格遵循OAuth 2.0授权标准(《RFC6749》),开发者们并未按照该标准执行。我使用类似Keycloak或Authentik的SSO应用程序,但无法使用Twitch API进行SSO。其中一个原因是“/token”端点,RFC指出“访问令牌”应包含[范围](这是工具如...)(这是一个由空格分隔的列表),但Twitch“很有趣”地没有遵循《RFC6749》并认为“我们可以以不同的方式实现”,因此响应是一个字符串数组...T.T \ 简直是疯了...想象一下有一个标准,而你的公司却在与之抗争... T.T
修复他们的API
/authorization
此路由只是将您重定向到 https://id.twitch.tv/oauth2/authorize
,但它会删除所有不受支持的权限。
Authentik等示例会添加profile
和email
权限。这些权限不能被删除,并且与Twitch API不兼容。因此,此中间件会删除它们并将您重定向。
/token
“/token”端点包含一个包含所有“权限”的“access_token”。由于Twitch没有遵循《RFC6749》,中间件必须将Twitch的“字符串数组”转换为“空格分隔的列表”。
/userinfo
与“/token”端点相同的问题,权限导致了问题。
安装
您可以设置以下环境变量
RUST_LOG
(默认:warn)HOST
(默认:0.0.0.0)PORT
(端口:8080)DEFAULT_CLAIMS_ID_TOKEN
(默认:picture,preferred_username,updated_at
)DEFAULT_CLAIMS_USERINFO
(默认:picture,preferred_username,updated_at
)
可以在URL查询中设置 claims
,但也可以设置一个默认值(如果未使用查询,则将使用该默认值)。请参阅请求Claims了解claims
的作用。
Docker
docker run \
-p 8080:8080 \
-e RUST_LOG=info \
-e DEFAULT_CLAIMS_ID_TOKEN="email,email_verified,picture,preferred_username,updated_at" \
-e DEFAULT_CLAIMS_USERINFO="email,email_verified,picture,preferred_username,updated_at" \
registry.gitlab.com/kerkmann/twitch_oidc_fix
Docker-compose
twitch_oidc_fix:
image: registry.gitlab.com/kerkmann/twitch_oidc_fix
restart: unless-stopped
ports:
- 8080:8080
environment:
- RUST_LOG=info
- DEFAULT_CLAIMS_ID_TOKEN=email,email_verified,picture,preferred_username,updated_at
- DEFAULT_CLAIMS_USERINFO=email,email_verified,picture,preferred_username,updated_at
自行构建(二进制文件)
您也可以自行构建二进制文件
git clone https://gitlab.com/kerkmann/twitch_oidc_fix
cargo build --release
或者从crates.io构建
cargo install twitch_oidc_fix
或者您可以直接从这里下载二进制文件这里
商标
我与美国Twitch Interactive,Inc.和/或其他国家的公司没有关联、合作、授权、认可或以任何方式官方联系。
依赖项
~18–33MB
~548K SLoC