Keycloak + .NET で始める認証・認可

最低限の初期設定とトークン取得

Keycloakの初期設定

まずは、Keycloakの初期設定を行います。
※起動方法は前回の記事参照

  1. ブラウザでhttp://localhost:8080にアクセスし、Keycloakの管理画面にログインします。

    ユーザ名、パスワードは、上記のKEYCLOAK_ADMINKEYCLOAK_ADMIN_PASSWORDに指定した値でログインできます。

    keycloak_login )

  2. ログイン後、Masterレルムが選択されていることを確認します。

  3. Add realmをクリックし、新しいレルムを作成します。

  4. レルム名を入力し、Createをクリックします。

    ここでは、MyRealmという名前で作成します。

  5. レルムが作成されたら、MyRealmを選択します。

  6. Clientsをクリックし、Createをクリックします。

  7. Client IDmy-clientを入力します。

  8. Client authenticationOnにします。

  9. Save`をクリックします。

    これで、クライアントが作成されました。

  10. my-clientを選択し、Settingsタブをクリックします。

  11. Access Typeconfidentialに変更し、Saveをクリックします。

    これで、クライアントの設定が完了しました。

トークンエンドポイントの確認

Keycloakのトークンエンドポイントを確認します。

  1. MyRealmを選択します。

  2. Clientsをクリックし、my-clientを選択します。

  3. Credentialsタブをクリックし、Client Secretの値をコピーします。

    この値は、後でトークンを取得する際に必要です。

  4. Endpointsタブをクリックし、Token Endpointの値をコピーします。

  5. Token Endpointの値をメモ帳などに保存しておきます。

    この値は、後でトークンを取得する際に必要です。

トークンの取得

.NETアプリケーションでKeyclaokを利用することが目的ですが、
いったん、Powershellを使ってトークンを取得してみます。

1
2
3
4
5
6
7
8
9
10
11
12
$realm = "MyRealm"
$client_id = "my-client"
$client_secret
$token_endpoint = "http://localhost:8080/auth/realms/$realm/protocol/openid-connect/token"

$token = Invoke-RestMethod -Method Post -Uri $token_endpoint -Body @{
client_id = $client_id
client_secret = $client_secret
grant_type = "client_credentials"
} -ContentType "application/x-www-form-urlencoded"

$token

$client_secretには、my-clientCredentialsタブで設定したClient Secretの値を入力します。

これで、トークンが取得できました。

トークンの確認

取得したトークンをデコードして中身を確認してみます。

1
$token.access_token | ConvertFrom-Json | Format-List

トークンの中身が表示されれば、トークンの取得は成功です。

トークンの内容は、jwt.ioなどのサイトで確調してみると、より詳細な情報が確認できます。

You forgot to set the business or currency_code for Paypal. Please set it in _config.yml.

コメント

You forgot to set the shortname for Disqus. Please set it in _config.yml.
You need to set client_id and slot_id to show this AD unit. Please set it in _config.yml.