OIDC
概要
OpenID Connect Core 1.0 (http://openid-foundation-japan.github.io/openid-connect-core-1_0.ja.html external_link) より引用
OpenID Connect 1.0 は, OAuth 2.0 プロトコルの上にシンプルなアイデンティティレイヤーを付与したものである. このプロトコルは Client が Authorization Server の認証結果に基づいて End-User のアイデンティティを検証可能にする. また同時に End-User の必要最低限のプロフィール情報を, 相互運用可能かつ RESTful な形で取得することも可能にする.
図でイメージしやすい記事 → https://qiita.com/TakahikoKawasaki/items/498ca08bbfcc341691fe external_link
GROWI で使ってみよう
ory/hydre (https://github.com/ory/hydra external_link) を利用。とりあえずクイックスタート (https://github.com/ory/hydra#quickstart external_link) に従って進める。
事前準備
- git
- Docker
- docker-compose
clone
$ git clone https://github.com/ory/hydra.git
build
$ cd ./hydra $ docker-compose -f quickstart.yml \ -f quickstart-postgres.yml \ up --build
client の追加
新たにターミナルを開き以下を実行
$ docker-compose -f quickstart.yml exec hydra \ hydra clients create \ --endpoint http://127.0.0.1:4445/ \ --id my-client \ --secret secret \ -g client_credentials
クライアント資格情報の付与
$ docker-compose -f quickstart.yml exec hydra \ hydra token client \ --endpoint http://127.0.0.1:4444/ \ --client-id my-client \ --client-secret secret [トークンが表示される]
トークンのイントロスペクションを実行
$ docker-compose -f quickstart.yml exec hydra \ hydra token introspect \ --endpoint http://127.0.0.1:4445/ \ --client-id my-client \ --client-secret secret \ > 上記で作成したトークンを入力 // res { "active": true, "aud": null, "client_id": "my-client", "exp": 1582610547, "iat": 1582606947, "iss": "http://127.0.0.1:4444/", "sub": "my-client", "token_type": "access_token" }
OAuth 2.0 Authorization Code Grantを実行
その許可を実行できるクライアントを作成
$ docker-compose -f quickstart.yml exec hydra \ hydra clients create \ --endpoint http://127.0.0.1:4445 \ --id auth-code-client \ --secret secret \ --grant-types authorization_code,refresh_token \ --response-types code,id_token \ --scope openid,offline \ --callbacks http://localhost:3000/passport/oidc/callback //growiのセキュリティ画面に表示されるコールバックURL
Auth0 を使ってみる
OpenID Connect 設定
key | value |
---|---|
Provider Name | 各自のアプリケーション名 |
Issuer Host | 各自のアプリケーションのドメイン |
クライアントID | 各自のID |
クライアントシークレット | 各自のシークレット |
Attribute Mapping 設定
key | value |
---|---|
Identifier | sub |
ユーザー名 | name |
名前 | nickname |
メールアドレス |
- 新規ログイン時、username が一致したローカルアカウントが存在した場合は自動的に紐付ける
- 新規ログイン時、email が一致したローカルアカウントが存在した場合は自動的に紐付ける
どちらも ON にする。
done