25日間の振り返りとNRI OpenStandiaのKeycloakに対する今後の取り組みについて

25日間あっという間に過ぎてしまいました。皆様、[Keycloak by OpenStandia](https://qiita.com/advent-calendar/2017/keycloak-by-openstandia)の記事お楽しみ頂けましたでしょうか？本日は25日間の記事を簡単に振り返りつつ、実案件の簡単なご紹介やNRI OpenStandiaが今後どのようなことをやろうとしているかを書きたいと思います。

# いつからKeycloakに注目していたか
本日の記事を書くに辺り、手元のメールを確認したところ、2015年8月に私の上司からこんなメールが来ていました。

Subject:  JBoss Keycloak
Date:     Thu, 27 Aug 2015 13:47:12 +0900
昼飯前に話していた、JBoss Keycloakの紹介動画です。
もしかしたら、XXXXXXよりイケてたりする？
（もっとも、私の知識はXXXXXXXXXXXから進んでいないですが。）
https://www.youtube.com/watch?v=5MQoJZKXM_s

約2年半前ですね。当時の私は某お客様のID管理プロジェクトに忙殺されており、残念ながら上記の動画を見たかどうか覚えていないのですが、今思うと私の上司、さすがの先見の明の持ち主だったなぁ、と（決して、媚を売っているわけではありません）。なお、NRIでは、実はKeycloakの前進であるPicketLinkの時代から検証を進めている部隊もありまして、社内の某アプリケーションサーバでは一部PicketLinkのライブラリが現役で動作していたりします。

因みにKeycloakとPicketLinkの2つのプロジェクトがマージされて現在のKeycloakプロジェクトになっています。
その辺りの事情については下記ページに記載があります。
http://blog.keycloak.org/2015/03/picketlink-and-keycloak-projects-are.html

# Advent Calendarを記載するにあたって
上記のとおり、２、３年前から細々とKeycloakの検証をやったりはしていたのですが、あくまで細々と、というモードでした。そんな中、最近弊社の事情が少し変わり、しっかり社外にも発信をしていこうというモードになりました（今後、我々OpenStandiaチーム部隊でも積極的に社外情報発信やっていくと思います、ご期待下さい。）。そんな中、OpenStandiaメンバの発案により今回Advent Calendarを書くことになりました。
実際の執筆にあたっては、早い人は11月くらいから準備を書き始め早々に執筆完了し、遅い人はスタート遅れ結局公開日直前まで書き、、、という感じで、進めてきました。だいぶ固い感じで書いてくれた人や、やけに緩く書いてくれた人がいる、ばらつき感はご容赦下さい。

# 25日間の記事を振り返って
簡単に25日間の記事を振り返ってみます。

|日付|簡単な振り返り|
|:--|:--|
|12/1|私@daian183がはじめにということで簡単にKeycloakの紹介をしました。|
|12/2|@tamura__246のほうからKeycloakのセットアップ方法を記載しました。|
|12/3,4|ここでは、@tamura__246、@katakura__proから標準プロトコルとしてよく使われるOIDC、SAMLを使って、連携しました。対象アプリケーションもSpring BootやWord Pressといったよく使いそうなものにしましたので、接続する必要のある方は是非とも記事を参考にしてください。|
|12/5,6|@yagiaoskywalker、@mamomamoよりKeycloakのクライアント・アダプターを使って簡単にアプリケーションを保護対象にできる例を記載しました。多種多様なクライアント・アダプターが用意されているのはKeycloakの特徴の1つかと思います。|
|12/7,8|ここでは、クライアント・アダプターではなく、リバプロ構成を組む必要がある場面を想定して、@yagiaoskywalkerが書きました。アプリケーション側はなるべく疎結合に、そして、簡単に、SSO基盤と繋がっておきたい、という要件は以外に多いと思います。|
|12/9,10|@masuo3より管理コンソールの機能全般について解説をしてもらいました。私もいくつかSSO製品の管理コンソールを見たことはありますが、後発だからか非常に洗練されている印象を受けました。|
|12/11|ここで少し経路を変え、@wadahiroよりKeycloak翻訳プロジェクトを支える裏の技術について解説しました。OSSの翻訳プロジェクトを考えている方には非常に参考になると思います。なお、現在、当Advent Calendarでいいね数トップです。|
|12/12|ここではKeycloakでのワンタイムパスワード機能設定方法について@naokiiiiiが解説しました。非常に簡単に、柔軟にワンタイムパスワード対応できます。|
|12/13,14,15|ここでは標準のデータストアでないパターンとしてLDAP認証パターン、統合Windows認証パターン、あと、最近のアプリではよく見るSNSによる認証連携パターンを@izey0306、@yagiaoskywalker、@tamura__246にて記載しました。エンタープライズや、最近のインターネットサイトではよく活用される機能かと思います。|
|12/16|本番運用では必ず必要になるであろう冗長構成の構築方法について@yoonisが解説しました。特にAWS EC2で冗長構成を組む場合にはぜひ参考にしてください。|
|12/17,18|@rawrよりOIDC/OAuthによるシングルサインオンパターンについて記載しました。かわいい絵が特徴的ですが中身は読み応えありです。|
|12/19|最近、いろんなところで話題になるAPI認可についてKeycloakを使うとどうなるのか、@rawrが書きました。OSSのAPI GatewayのKongとの組み合わせ構成となっています。|
|12/20|日立製作所の@tnorimatさんに登場頂き、KeycloakをPKCE対応させるにあたって気付かれた点、ノウハウを記事にして頂きました。非常にディープな内容になっていますが、ぜひご一読ください。|
|12/21|最近登場したAWS FargateでKeycloakを動かすという記事を@wadahiroが書きました。KeycloakをDockerで動かす記事はよく見ますが、AWS Fargateで動かした記事は（おそらく？）初かと思います。|
|12/22,23,24|Keycloakのカスタマイズポイントシリーズが続きました。カスタマイズポイント整理：@yoonis、リスクベース認証対応：@naokiiiii、パスワードレス対応：@rkato。カスタマイズできるのは、OSSの強みです。|
|12/25|この記事になります。@daian183が書いています。|

各記事参考になるところを拾って頂き、ご活用頂けると嬉しいです。


# 実際にKeycloakを使った案件
ここで実際にどのような案件をお客様に頂くかを簡単にご紹介します。

### プロジェクト事例その１
簡単にいうと、基盤更改に伴う認証基盤構成変更（OpenAM→Keycloak切替）プロジェクトです。Keycloak採用の理由としては、①高度認証・認可系の要件がなかったこと②LDAP不要の構成が容易であったこと③Immutable Infrastructureの実現が容易だったことが理由でした。1日目の記事でも紹介しましたが、@wadahiroが社外セミナーで発表しておりますので皆様ぜひご覧ください。（残念ながら動画は機材の関係で10分ちょっとで切れてしまっています。）

https://secureoss-sig.connpass.com/event/69314/presentation/
![WS000047.JPG](https://qiita-image-store.s3.amazonaws.com/0/208260/b44de0be-53c3-3b5e-4dc5-a1c0fbd3cb7f.jpeg)

### プロジェクト事例その２
Active DirectoryのKerberos認証を活用して統合Winodows認証を実現させたいというお客様は特に企業ユーザーに多いと思います。このプロジェクトもそのような要件がありました。同時にクラウド化、Office 365活用が進んでおり、フォレスト構成等の変更もありそう、というプロジェクトです。Keycloakはカスタマイズが可能なので要件に見合わない部分はカスタマイズして機能を付加しお客様ご要望を実現しようとしています。

# 今後Keycloakが活用できそうなシーンは？
社内にある複数アプリケーションの認証をSSO化するという目的で、現在様々なSSO製品が企業内に存在していると思います。社内からのアクセスが前提のSSOであり、これは今後も基盤更改等はありながらも残り続ける世界だと思います。一方で、昨今は、働き方改革の追い風もあり、いつでも、どこでも、どんなデバイスからでも働ける環境を、という流れが強くなっており、社外からのアクセスも強く求められるようになってきました。

![図3.png](https://qiita-image-store.s3.amazonaws.com/0/208260/3a980445-7307-3557-e4d9-24219ae9ce0a.png)

MicrosoftはオンプレのADとクラウドのAzure ADを合わせたトータルソリューションを展開しており、この分野で確実にトップを走っているベンダーだと思います。Microsoftの他にもトータルのIDaaSサービスを提供するベンダーは数多くあります。そういったサービスを活用できる部分は活用すればいいと思っている一方で、やはり、お客様の要件は千差万別でありカスタマイズが必要になる場面が必ずあると思っています（例えば、個別の認証要件とか、既存の社内SSOとのシームレスな連携、とか）。そういうところに、オープンソースで自由にカスタマイズ可能なKeycloakを活用できないかと思っています。1日目にご紹介したとおり、残念ながらOpenAMはクローズドになってしまいソースコードを見ることはできなくなってしまいました。Keycloakは、オープンな、コミュニティベースの活動の場を提供してくれる貴重な存在だと思いますので、ぜひ皆で盛り上げていきたいと思っています。

# 今後も定期的にQiita上で情報発信していきます。
Keycloak自体の発信もまだまだ不足していると思いますし、上述した活用シーンの情報発信なども今後どんどんしていきたいと思っています。2017年のAdvent Calendarとしては一旦ここで締めさせて頂きますが、今後ともどうぞ宜しくお願いいたします！

# NRI OpenStandiaについて
OpenStandiaとは、野村総合研究所（NRI）が提供する、オープンソースソフトウェアに対するエンタープライズ向けのサポート＆サービスの総称です。 オープンソースソフトウェア利用の課題を解決し、企業にもたらすオープンソースソフトウェアのメリットを感じて頂くための様々なサポート＆サービスメニューをご用意しています。

**OpenStandia公式サイトは[こちら](https://openstandia.jp/?utm_source=qiita&utm_medium=art&utm_campaign=qiita_ar)**