mattermostでOAuth 2.0認証機能(OIDC)を外部アプリに提供する
はじめに
outline wikiを構築する上で、独自認証機能がなく、
外部のOIDC認証機能を利用する必要があったので
mattermostのOAuth 2.0認証機能を利用してみました。
ざっくり言うと「googleアカウントでログイン」的なやつです。
outline
このOSSナレッジツールの認証に利用しています。
mattermost
このOSSのコミュニケーションツール(slackクローン)の機能で
OAuth 2.0認証機能(OIDC)を提供します。
OAuth 2.0認証機能作成方法
以下にまとめていきます。
システムコンソール
メインメニュー > システムコンソールからシステムコンソール画面を開いて、
システムコンソール > 統合機能管理 > OAuth 2.0サービスプロバイダーを有効にする の設定を有効にします
統合機能
メインメニュー > 統合機能から統合機能の画面を開いて、
OAuth 2.0アプリケーションを選択します。
OAuth 2.0アプリケーションを追加するを選択します。
必要情報を入力して、「保存」します
設定項目
信頼済み
「はい」に設定すると、アプリケーションは Mattermost によって信頼されていると見なされます。
これは、Mattermost がサードパーティ アプリケーションに署名するときに
ユーザーが承認を受け入れる必要がないことを意味します。
「いいえ」に設定すると、ユーザーの初回認証時に承認を受け入れるか拒否するためのページが表示されます。
表示名
アプリケーションの名前を 64 文字以内で入力します。
アプリケーションへのアクセスを許可するとき、
[設定] > [セキュリティ] > [OAuth 2.0 アプリケーション]で
許可されたアプリケーションのリストを表示するとき、
および[統合]メニューで OAuth 2.0 アプリケーションのリストを表示するときにユーザーに表示される名前です。
説明
ユーザーが[設定] > [セキュリティ] > [OAuth 2.0 アプリケーション]で
承認されたアプリケーションのリストを表示するときに表示されるアプリケーションの短い説明です。
ホームページ
OAuth 2.0 アプリケーションのホームページです。つまりは説明用のページです。
ユーザーはアプリ ページにアクセスしてアプリケーションの機能の詳細を確認できます。
URL は有効な URL である必要があり、
サーバー構成に応じてhttp://
またはhttps://
で始まる必要があります。
あくまで機能詳細への導線であり、mattermostのOAuth 2.0認証を利用したいサイトでなくてもよいので気をつけてください。
アイコンのURL
オプションです。なくてもかまいません。
ユーザーが[設定] > [セキュリティ] > [OAuth 2.0 アプリケーション]で承認されたアプリケーションのリストを表示するとき、
および[統合]メニューで OAuth 2.0 アプリケーションのリストを表示するときに表示される画像です。
有効な URL であり、http://
またはhttps://
で始まる必要があります。
コールバックURL
アプリケーションの承認を、承認または拒否した後に
MattermostがユーザーをリダイレクトするURLです。
承認コードまたはアクセス トークンを処理する唯一のURLになります。
複数のURLが指定された場合、ユーザーはアプリの最初の認証に使用された URL にリダイレクトされます。
各URLは個別の行に記述し、 http://
またはhttps://
で始まる必要があります。
outlineではこんな感じになります
https://XXX.com(outlineサーバのドメイン)/auth/oidc.callback
完成
これで作成されました
利用側設定
認証に利用する側アプリやサイトで設定するmattermostのエンドポイントは以下の通りです。
OAuth エンドポイント
承認URI
/oauth/authorize
トークンURI
/oauth/access_token
ユーザー情報URI
/api/v4/users/me
例) outlineのケース
例えば以下のように利用側アプリやサイトのコンフィグなどで設定します。
利用するアプリケーションによって設定方法は異なると思いますので、
詳細は利用アプリやサイトのドキュメントを参照してください。
OIDC_AUTH_URI=https://XXX.net(mattermostサーバのドメイン)/oauth/authorize
OIDC_TOKEN_URI=https://XXX.net(mattermostサーバのドメイン)/oauth/access_token
OIDC_USERINFO_URI=https://XXX.net(mattermostサーバのドメイン)/api/v4/users/me
chameleonmeme.com/ きっかけは、偶然同じ現場で働いていたエンジニア3人の 「もっと仕事にのめり込んだり、熱中したいよね」という雑談でした。 営業から開発、サービスの提供まですべての工程を自分たちの手で行い、 気の合う仲間と楽しく仕事をすることで熱中するためにチームをスタートしました。
Discussion