OpenAMとForgeRock AM

# はじめに
本日は我々OpenStandiaで取り扱っているオープンソース関連プロダクトの中でも、特にお問い合わせ頂くことの多いOpenAM、ForgeRock AMについて、これまでの歴史を簡単に振り返りながら現在の状況を記載してみたいと思います。

# OpenAMとは
OpenAM、オープンソースの認証ソフトウェアの代名詞と言っても過言ではないと思います。その誕生を時系列で記載すると下記のようになります。

- 2005年07月、SunがOpenSSOをファーストリリース(ベースはSun Java System Access Manager)
- 2008年11月、SunがOpenSSOの商用版をファーストリリース
- 2010年10月、OracleのSun買収に伴いOpenSSOからフォークする形でForgeRock OpenAMが誕生
- 2016年11月、ForgeRock社がOpenAMのソースコードトランクの閉鎖を開始
- 2017年04月、ForgeRock社がAccess Management 5をリリース
- 2017年10月、ForgeRock社がAccess Management 5.5をリリース
- 2018年05月、ForgeRock社がAccess Management 6をリリース
- 2018年11月、ForgeRock社がAccess Management 6.5をリリース

2016年末にForgeRock社がOpenAMのソースコードクローズド化方針を打ち出したときはオープンソース×認証の界隈ではなかなかの衝撃が走りました。海外でも[OpenAMのフォークを促すようなサイト](http://www.timeforafork.com/)も立ち上がり混沌とした状況でした。

当時インターネット上で行われた会話について、日本語の情報としては[田村さんのblog記事](https://t246osslab.wordpress.com/2018/01/08/openam%E3%81%AF%E3%82%82%E3%81%AF%E3%82%84%E3%80%8Copen%E3%80%8D%E3%81%A7%E3%81%AF%E3%81%AA%E3%81%84%E3%81%AE%E3%81%8B%EF%BC%9F/)が詳しいです。

なお、日本ではOpenAMコンソーシアムが中心となって、OpenAMのソースコード公開、開発の継続・強化を行う活動が進められています。詳しくは[OpenAMコンソーシアムのニュースリリース](https://www.openam.jp/operation/operation_2018/2018-7-9-newsrelease.html)や[@ITのインタビュー記事](http://www.atmarkit.co.jp/ait/articles/1811/05/news006.html)をご覧ください。


# ForgeRock Identity Platformとは
OpenAMのソースコードクローズド化は上記のように業界関係者に大きな衝撃を与えたわけですが、ForgeRock社はこれを機に製品への開発投資を加速します。現在、ForgeRock社製品はForgeRock Identity Platformという名前でブランディングされ、下記のカテゴリ毎に開発が進められています。製品名、製品カテゴリにOpenという名前が一切ないことはForgeRock社の意思の表れとも言えるでしょう。

- Access Management
- Directory Services
- Identity Management
- Identity Gateway
- Edge Security

https://backstage.forgerock.com/
![image.png](https://qiita-image-store.s3.amazonaws.com/0/208260/a68b0260-00b5-6ac5-9c0a-ffd8eecc0073.png)

上記はForgeRock Identity Platformの技術情報が公開されるBACKSTAGEと呼ばれるサイトです。ForgeRock社製品の技術情報をチェックする際には必須となりますので開発者の方はぜひチェックしてみてください。パッと見て頂くとわかる通りかなりのボリュームなのと情報は全て英語となります。

https://backstage.forgerock.com/docs/platform/6.5/platform-guide/#modules-table
![WS000029.JPG](https://qiita-image-store.s3.amazonaws.com/0/208260/2a5a6a9d-0445-b838-2a1f-079d57774b75.jpeg)

また、上記の表に示される通り、各カテゴリはさらにModuleという単位で機能分割されます。

# Access Managementの注目ポイント
本日はForgeRockが明確にOpenAMのソースコードクローズド化を始めてからのリリースであるAccess Management 5以降で、特に注目されている機能や取り組みについてピックアップしてご紹介します。Access Management 5以降のソースコードは公開されていないので、ここでご紹介するものは基本的に既存のOpenAMには実装されておらず、Access Managementにのみ搭載されている機能となります。

## Intelligent Authentication
Access Management 6の目玉機能となります。もともとAuthentication ModuleとAdaptive Risk Moduleという別のModuleが存在していましたが、Access Management 6のリリースに伴い、2つのモジュールが統合＆拡張され、Intelligent Authentication Moduleとしてリリースされました。Intelligent Authentication Moduleは認証に関する下記の機能を提供します。

- Authentication Trees and Nodes
- Authentication Modules
- Adaptive Risk Module
- Session High Availability
- Multi-Factor and Strong Authentication
- External Configuration Store
- REST and SOAP STS
- Web and Java Agents for SSO
- Mobile Authenticator
- User Login Analytics

この中で特にAccess Management 6特有の機能としてAuthentication Trees and Nodesという機能があります。画面キャプチャを見て頂くとイメージが伝わると思いますが、認証ロジックをGUIで設計・表現できる機能です。

https://backstage.forgerock.com/docs/am/6.5/authentication-guide/index.html#sec-about-authentication-trees
![WS000026.JPG](https://qiita-image-store.s3.amazonaws.com/0/208260/66605ad4-0f3d-1d57-f7ae-8be010dd66b2.jpeg)


認証ツリーの中で利用できる認証ノードについて、ForgeRock AMではデフォルトでかなりの数のノードを提供しています（[マニュアルベースで現在45以上です](https://backstage.forgerock.com/docs/am/6.5/authentication-guide/index.html#auth-node-configuration-hints)）。自分で複雑な認証ロジックを開発することなく簡単に既存のノードの組み込みを行うことが可能です。また、この認証ノードについてForgeRockがマーケットプレイスと呼ばれる場所を提供して3rd party間でライブラリを共有できる仕組みを提供しています。

https://backstage.forgerock.com/marketplace/catalogDisplay
![WS000027.JPG](https://qiita-image-store.s3.amazonaws.com/0/208260/bda3baca-93ea-3235-fd4f-da0d7c32ffca.jpeg)

## FIDO/WebAuthn
あまりドキュメント上は目立っていませんが、Access Management 6.5でついにFIDO/WebAuthnに対応しました。サポートされるブラウザバージョンや使い方もドキュメント化されているのでいち早くFIDO/WebAuthnを自前のプラットフォームに適用したい人はぜひチェックしてみてください。

https://backstage.forgerock.com/docs/am/6.5/authentication-guide/#about-mfa-web-authn
![WS000030.JPG](https://qiita-image-store.s3.amazonaws.com/0/208260/5584022e-fca8-2ae4-d799-fc60b9b0fb92.jpeg)

https://backstage.forgerock.com/docs/am/6.5/authentication-guide/index.html#auth-node-webauthn-auth
![WS000031.JPG](https://qiita-image-store.s3.amazonaws.com/0/208260/49bcf8ea-eba8-80bc-7a8b-4443e4abdb17.jpeg)

## IoT
ここからはAccess Managementの範囲を超えてきますが、ForgeRockはIoTを見据えて製品開発投資を行っています。IoT時代におけるIdentity管理のシナリオについて、具体的なユースケースで示しています。

https://backstage.forgerock.com/docs/platform/6.5/iot-guide/#modules-table
![WS000028.JPG](https://qiita-image-store.s3.amazonaws.com/0/208260/3e2a3e8f-8a4e-b742-9d49-9110be67f247.jpeg)

この範囲のカバーは認証やID管理、ディレクトリサービスの機能を個別に提供している製品、プロダクトでは難しいかと思います。Identityをトータルで考えるForgeRock社の付加価値が出る領域の1つといえるかと思います。

## Open Banking
オープンAPI、Open Banking、数年前から聞かれるようになった言葉ですが、ここ数年で一気に日本での温度感が高まったように思います。聞いたことない/あまりよく知らない、けど、興味あり、という方は一度下記の情報を確認して見てください。

[オープンAPIのあり方に関する検討会](https://www.zenginkyo.or.jp/abstract/council/openapi/)
全国銀行協会にて設置された検討会の報告資料です。約半年に渡って検討会が開催されたようですが、こちらの報告書を確認するとオープンAPIが日本の銀行業界においてどのような基準で採用される方向にあるかが理解できると思います。

[金融API時代のセキュリティ](https://www.slideshare.net/nat_sakimura/api-openid-financial-api-fapi-wg)
OpenID Foundation理事の崎村さんによる解説資料です。1年前の資料になりますが、P.38に各国の採用状況について言及があります。

[Financial APIs Workshop](https://financial-api.net/)
今年の7月に大手町で開催されたFinancial APIs Workshopのサイトです。ページ下部に当日の資料が公開されていますが、今年の夏時点でOpen Banking最前線といった資料が揃っているかと思います。

上記資料群でもしばしば登場しますが、Open Bankingについては現在ヨーロッパ、特に、英国にて先行して適用が進んでいます。その標準は、Open Banking Implementation Entityという英国の銀行オープン化の標準団体がOpen Banking Standardとして策定しています。ForgeRockもこの活動に参加しており、リファレンス実装をForgeRock Identity Platformによる実装で提供しています。

(UK Open Bankingのサイト)
https://www.openbanking.org.uk/
https://openbanking.atlassian.net/wiki/spaces/DZ/overview

(ForgeRockによるリファレンス実装)
https://docs.ob.forgerock.financial/
https://backstage.forgerock.com/knowledge/openbanking/book/b77473305
https://backstage.forgerock.com/knowledge/openbanking/article/a30693034
https://www.slideshare.net/ForgeRockTechTalks/implementing-open-banking-with-forgerock

2019年もオープンAPI、Open Bankingの動きは加速することが予想されますので興味のある方はぜひチェックしてみてください。

# ForgeRock Identity Platformを利用するにあたって
ここまでの説明でForgeRock Identity Platformを触ってみようかなという気になってきたでしょうか？ForgeRock Identity Platformのソースコードは公開されておりませんし商用利用にあたってはサブスクリプション購入が必要となりますが、評価目的での利用は無料です。モジュールダウンロード時に同意頂く[ForgeRock Evaluation License Agreement](https://backstage.forgerock.com/knowledge/backstagehelp/article/a62276210)の範囲で触ってみてください。

# ForgeRock Identity Platformのサポートポリシーについて
実際に商用利用を検討するにあたってまず気になるのがサポートポリシーではないでしょうか。サポートポリシーについては下記にて明記されていますので商用利用のご検討をされる方はこちらもぜひ参考にしてください。
[ForgeRock End of Service Life (EOSL) policy](https://backstage.forgerock.com/knowledge/kb/article/a88380700)
[Checking your product versions are supported](https://backstage.forgerock.com/knowledge/kb/article/a18529200)
[Maintenance and Patch availability policy](https://backstage.forgerock.com/knowledge/kb/article/a47486518)
[Security Policy](https://www.forgerock.com/services/security-policy)

# まとめ
本日はOpenAM、ForgeRock AMのご紹介をしました。クローズドソースコードとなりこの先の展開に不安を感じている方も多くいらっしゃるかと思います。ForgeRock社が目指すForgeRock AMの方向性について、読んで頂いた皆様の理解の助けになっていましたら幸いです。

# 補足
OpenStandiaでは現在認証・ID管理ソフトウェアとして、ForgeRock Identity Platform、Keycloak(Red Hat Single Sign-On)の両方を取り扱っています。よくご質問も受けるのですが、どちらが優れている・どちらが劣っているということはなく、要件や特性に応じての使い分けが重要であると思っています。どういうポイントで選択すべきなの？というところについては、先日「オープンソースで実現する認証・ID管理ソリューションと活用事例」 と題しましてセミナー発表をしました([セミナー情報](https://www.nri-secure.co.jp/seminar/2018/id01.html))。資料も公開予定ですので興味のある方はご覧ください。

# 25日間を振り返って
昨年度はKeycloak一色のアドベントカレンダーでしたが、今年度は趣向を変えてオープンソースをテーマに25日間書きました。いかがだったでしょうか？これからもQiitaやOpenStandiaサイト、各種メディアなどで情報発信していきたいと思います。引き続き[OpenStandia](https://openstandia.jp/)をどうぞ宜しくお願いいたします！

# 参考リンク
[k-tamuraのGitHubページ](https://github.com/k-tamura/openam-book-jp/blob/master/history-of-opensso.md)
[OpenAMのWikipediaページ](https://en.wikipedia.org/wiki/OpenAM)