Matrix 实例也建了有一段时间了,但并没有多少人使用,前天看到zyn的评论 ,如果将 Mastodon 与 Matrix 整合起来,让长毛象用户可以一键登入,无需二次注册想必可以降低一些使用门槛,拉一些人到 Matrix 中去。

如果你想让你的 Matrix 实例可以使用 Mastodon OAuth2 认证登录,可以参考本篇内容。


本文相关域名使用如上内容,实际使用时请根据个人情况自行修改。

Development页面 创建一个 OAuth 应用。
  • Application name:随便填。

  • Application website:随便填,可以为空。

  • Redirect URI[synapse public baseurl]/_synapse/client/oidc/callback,本次为 https://neo.bgme.me/_synapse/client/oidc/callback

  • Scopes:本着最小权限原则,仅授权 read:accounts

应用创建完毕后,记下该应用的 Client keyClient secret

修改 Synapse 配置文件,添加如下内容:

oidc_providers:
  - idp_id: mastodon
    idp_name: Mastodon
    idp_icon: "mxc://bgme.me/483b11fe1baee524ab6b7ae6c60a65a51e0bf1d3"
    discover: false
    issuer: "https://bgme.me/"
    client_id: "[Mastodon Client key]"
    client_secret: "[Mastodon Client secret]"
    authorization_endpoint: "https://bgme.me/oauth/authorize"
    token_endpoint: "https://bgme.me/oauth/token"
    userinfo_endpoint: "https://bgme.me/api/v1/accounts/verify_credentials"
    scopes: ["read:accounts"]
    user_mapping_provider:
        config:
            subject_claim: "id"
            localpart_template: "{{ user.username }}"
            display_name_template: "{{ user.display_name }}"

重启 Synapse 服务,访问 https://neo.bgme.me/_matrix/client/r0/login ,如看见 typem.login.ssom.login.token 项目,说明 SSO 设置完成。

{
    "flows": [
        {
            "type": "m.login.sso",
            "identity_providers": [
                {
                    "id": "oidc-mastodon",
                    "name": "Mastodon"
                }
            ]
        },
        {
            "type": "m.login.token"
        },
        {
            "type": "m.login.password"
        },
        {
            "type": "uk.half-shot.msc2778.login.application_service"
        }
    ]
}

尝试使用 SSO 方式登录,如登录成功,即完成 Mastodon 与 Synapse 的认证整合。


参考资料: