#api-bindings #web #twitch #授权 #OIDC #令牌 #修复

app twitch_oidc_fix

修复twitch OIDC授权,只是一个简单的API绑定

3个版本

0.1.2 2022年7月18日
0.1.1 2022年7月18日
0.1.0 2022年7月18日

#17 in #修复

EUPL-1.2

2.5MB
423

Twitch OIDC修复

Authentik Single Sign On page

TL;DR:使用Twitch进行SSO(单点登录)或通用OIDC客户端,只是一个小的桥梁/中间件。 :)

由于Twitch-API并不严格遵循OAuth 2.0授权标准(《RFC6749》),开发者们并未按照该标准执行。我使用类似KeycloakAuthentik的SSO应用程序,但无法使用Twitch API进行SSO。其中一个原因是“/token”端点,RFC指出“访问令牌”应包含[范围](这是工具如...)(这是一个由空格分隔的列表),但Twitch“很有趣”地没有遵循《RFC6749》并认为“我们可以以不同的方式实现”,因此响应是一个字符串数组...T.T \ 简直是疯了...想象一下有一个标准,而你的公司却在与之抗争... T.T

修复他们的API

/authorization

此路由只是将您重定向到 https://id.twitch.tv/oauth2/authorize,但它会删除所有不受支持的权限。
Authentik等示例会添加profileemail权限。这些权限不能被删除,并且与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