keycloak Security

keycloakとGoogleAPIでSNSログイン認証を実装

2023年3月13日


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です。

CATEGORIES & TAGS

keycloak, Security,

Author:


comment

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

関連記事

カテゴリー

むるし

フリーランスのインフラ系エンジニア。
備忘録で色々書いていきます。
お問い合わせは↓
mo-gyu@murci.net
LPIC303 Security
%d人のブロガーが「いいね」をつけました。