2
5

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

keycloak入門

Last updated at Posted at 2019-05-11

前提知識(筆者のレベル)

・Sier経歴2年、Win,Linuxどちらも触れるってレベル
・認証についての知識は用語をちらほら知ってるレベル
 (SSOとかMFAとか)
・ADについての基礎知識がある
 ⇒keycloakは認証用外部DBとしてLDAPやADを連携することが可能

※ちなみにこの記事を書いたのは2018年7月時点なので、少し情報が古い箇所があるかもしれないのでご了承を

keycloakとは

・OSSでシングルサインオンを実現する認証ソフトウェア
・認証、認可も可能でSAML、OpenIDConnect、OAuth2.0に対応
・SSO基盤の分野では後発だが、コミュニティベースでの開発が進められており、勢いのあるソフトウェア
・「クライアントアダプタ」と呼ばれるKeycloakからのアクセストークン取得やアクセス制御をするもの。
 ⇒いわゆるエージェント方式に相当

keycloakの代表的な機能

1.シングルサインオン
2.API認可
3.アプリケーション向けのライブラリ提供
4.外部IdP連携
5.外部ユーザーデータストアとの連携
6.豊富なカスタマイズポイント

シングルサインオン

以下に対応
・OpenID Connect
・SAML2.0

実現方法

①keycloakクライアントアダプターを導入してSAML2.0/OIDCに対応させる
 これがベースのやり方で、レガシーな社内アプリケーションを使用している場合には
 クライアントアダプターが対応していない場合もある。。
 ⇒リバースプロキシ型を利用して対応!

API認可

OAuth2.0を利用して、認可サーバーとしてkeycloakを利用する。

今後注目されるワード

FAPI(Finacial API)
FIDO(Fast IDentity Online:ファイド)

アプリケーション向けのライブラリ提供

クライアントアダプターと呼ばれるライブラリを各アプリケーションに組み込むことで
SSO(OIDC、SAML)や認可(OAuth)を行うことができる

⇒対応しているプラットフォームは少ない。。
⇒そんなときは、「リバースプロキシ方式」がある
以下を使用してリバプロ型を利用することが可能

  • Apacheのmod_auth_openidc (一般的なシングルサインオンの場合)
  • 3scaleのapicast (API認可認証の場合)
    ⇒今後はGO言語のベースのproxyを用意して、

OpenAMとの違いは?

・インストール、設定が簡単。(というよりOpenAMのほうが複雑)
 ⇒Java8JDKのインストールと、配布されているtar/zipを解凍するだけ!!
 ⇒GUIで設定可能(CLIツールもあり)

・Dockerのイメージもあるので簡単にたてることもできる

・導入も負荷が高くないため、リスクベース認証など凝ったことしなければ
 keycloakのほうがシンプルにできる

⇒「シングルサインオンやりたいです!」とか「ちょっとだけ多要素認証やりたい」「そんな複雑な認証は必要ないです」って感じの要件であればOpenAMよりもkeycloakのほうがハマる

もう少し細かく言うと

以下はkeycloakではできない
・リスクベース認証
・代理認証

・対応しているプラットフォームがOpenAMに比べて少ない。
 ⇒けど有名どころは抑えているので、WebアプリをIISで立てているとか
  JBossの古いバージョン使っているとか、がなければ大体使える

結局どっちがいいの?

結論から言うと、OpenAMのほうが安定しているので「現状は」優勢
keycloakは限定要件(SAMLだけやりたい、ソーシャル連携だけやりたい)であればハマるパターンもある。

一般企業の認証基盤として
keycloakを導入するのはちょっと怖いかなーという印象。

なぜなら、keycloakはコミュニティが活発でバージョンアップのサイクルも早い。
 ⇒認証基盤を半年に一回バージョンアップさせる、ってのは現実的に考えてありえない
  (費用とか工数とか鑑みて)

keycloakも機能的には基本的なところは網羅しているが、
まだまだバグも多く、どんどん改修⇒アップグレードしているので安定性、という意味では
OpenAMを採用したほうがよい。

だけどOpenAMはコミュニティが停滞している、ソースコードも膨れ上がっていて
カスタマイズには高度なスキルが求められる。
それに比べて扱いやすいkeycloakが安定性が増していけば、
今後「OpenAM⇒keycloakへの移行」なんて案件が増えていくことが予想される。

結論

今のうちにkeycloakの仕様を把握しておいてノウハウを貯めておき
近い将来の認証基盤公開案件を狙うことが可能
なので今後もkeycloakのキャッチアップをどんどん進めていきたいと思います。

動作環境

項目 動作環境
ハードウェア RAM 最低512M以上
HDD 最低 1GB以上
プラットフォーム Javaが動作するOS
Win,LinuxどっちもOK
Java Development Kit Java Development Kit 8
対応仕様 SAML2.0
OpenID Connect
OAuth2.0

参考URL

・OpenStandia
http://openstandia.jp/oss_info/keycloak/
・keycloakとは
https://qiita.com/daian183/items/30f01e162e03567ff21b

2
5
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
2
5

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?