Ubuntuにkeycloakをdockerで構築して、GoogleAPIでSNSログイン認証を実現します。
keycloakでレルムとユーザを紐付けて作成し、そのユーザでkeycloakのレルムにログインした際に、Google認証が走る流れになります。
keycloakをdockerで構築
dockerコマンド
$ sudo docker run -d -p 18080:8080 -e KEYCLOAK_USER=admin -e KEYCLOAK_PASSWORD=adminadmin --name keycloak jboss/keycloak
$ sudo docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
6606cb13ecf9 jboss/keycloak "/opt/jboss/tools/do…" 4 minutes ago Up 4 minutes 8443/tcp, 0.0.0.0:18080->8080/tcp, :::18080->8080/tcp
GUI操作
- 管理者(最初のログインアカウント)でブラウザアクセス
127.0.0.1:18080
user admin
pass adminadmin - realm(レルム)の作成
左ペイン>Master>Add realm
demo_realm - ユーザの作成
左ペイン>Manage>Users>Add user
作成したログインアカウント↓
user admin
admin@murci.local
create
Credentialタブ>Set Password
pass adminadmin - 作成したユーザでログインする
左ペイン>Clients>BaseURL「/auth/realms/demo/account」クリック
Login - 作成したレルムでログインする
http://127.0.0.1:18080/auth/realms/demo-realm/account
Google APIでOAuth 2.0クライアントIDを作成する
Google APIでOAuth 2.0クライアントIDを作成します。これは、Googleが提供する認証サービスを使用して、Keycloakにログインできるようにするために必要です。Google Cloud Consoleにログインし、API&サービス> 認証情報> OAuth 2.0クライアントIDを作成してください。
以下にブラウザでアクセスします
https://console.cloud.google.com/apis/
プロジェクト作成
keycloak-google
プロジェクト ID: mythic-lead-zzzzzz
O-AuthクライアントID作成
左ペイン>認証情報>認証情報を作成>OAuthクライアントIDの作成
アプリケーションの種類>ウェブアプリケーション
名前:keycloak
作成をクリックすると、以下のようなパラメータが生成されます
クライアント ID
xxxxxxxxxxxxx.apps.googleusercontent.com
クライアント シークレット
yyyyyyyyyyyyy
RedirectURIの登録
APIとサービス
左ペイン>認証情報>OAuth2.0クライアントID>keycloak クリック
承認済みのリダイレクトURI
redirect_uri= http://127.0.0.1:18080/auth/realms/demo_realm/broker/google/endpoint
↑追加、保存
keycloakでGoogleAPI登録
http://127.0.0.1:18080に管理者ログイン
keycloak>Identity Providers>Add provider>Google
Client ID xxxxxxxxxxxx.apps.googleusercontent.com
Client Secret yyyyyyyyyyyy
Enabled ON
Saveで保存
動作確認
http://127.0.0.1:18080/auth/realms/demo_realm/account
にアクセスしてGoogle認証が表示されることとログインできることを確認できればOKです。