LoginSignup
0
0

More than 3 years have passed since last update.

できるオーオース mod_auth_openidc編

Last updated at Posted at 2020-03-22

前回はResource Owner Password Credentials Grantでしたが、今回はUbuntu上のApacheにmod_auth_openidcをインストールして、悪名高いImplicit Grantを体験してみます。
https://qiita.com/namikitakeo/items/ea23adbc0b5c941ff0ed

今回のClientは、前回までのコンソールとは違ってWEBブラウザになるため、環境変数を表示するCGIを設置します。

mod_auth_openidc設定をApacheで行い、環境変数を表示するCGIを保護します。

auth_openidc.conf
(省略)
OIDCRedirectURI https://ubuntu18.japaneast.cloudapp.azure.com/cgi-bin/redirect_uri
OIDCCryptoPassphrase passphrase
OIDCProviderMetadataURL https://ubuntu18.japaneast.cloudapp.azure.com/auth/realms/master/.well-known/openid-configuration
OIDCScope "openid"
OIDCSSLValidateServer Off
OIDCClientID ubuntu18
OIDCResponseType "id_token token"
<Location /cgi-bin>
AuthType openid-connect
Require  valid-user
</Location>
(省略)

つぎに管理ユーザー(admin)でKeycloakのAdministration Consoleにログインしたら、Clientsメニューをクリックして、新規Client(ubuntu18)を登録します。Access Typeはpublicのままで、Implicit Flow EnabledをOFFからONに変更しSaveします。

さっそくWEBブラウザからアクセスして、Implicit Grantでid_token/access_tokenを取得します。

本来OAuth 2.0ではresponse_type=tokenがImplicit Grantなのですが、access_tokenの改竄を防ぐためなのか、OpenID Connect 1.0のid_tokenを追加したImplicit Flowでないと実行できませんでした。

OIDCResponseType "id_token token"

またセキュリティ面を考慮するならば、Hybrid Flowで#フラグメントにaccess_tokenが渡らないようにすべきなんだと思います。

OIDCResponseType "id_token code"

かんたんにaccess_tokenが取得出来たのですが、もうuserinfoは叩かなくてもいいですよね。ところで本命のAuthorization Code Flowもmod_auth_openidcを使えば簡単です。くわしい説明は、Qiitaにすばらしい記事がたくさんあるため割愛いたします。

OIDCResponseType "code"

Keycloakすごい!mod_auth_openidcすごい!という事で、できるオーオースは終わりにしようと思います。もしも分かりにくい部分がありましたらご連絡ください。

次回

つくるオーオース MVC編
https://qiita.com/namikitakeo/items/0de598b8e43eb5b1ff94

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0