OpenAMってむずかしいの？

やっと最終日だ...長かった...(´ρ`)

最終日の今日はわたしなりのマトメというか、今おもってることを記したいと思います。

## OpenAMは誰でも、簡単に、すぐに触れる

具体的に言うと、20代半ばの情シスでも触れました。なんとかなりました。
なんで出来たのか？というところをまとめると以下のようになります。

* ドキュメントが手厚かった
* 設定のデフォルトが**すぐ触れる状態**となっている
* 試すだけならローカルのVMで動く（お金がかからない、上長の承認がいらない）

まず、「**ドキュメントの手厚さ**」です。すべて英語であるというところを除けば、非常に懇切丁寧に書かれていて、良いドキュメントだと思います。
ピンポイントで「〇〇がしたい～」というニーズにも応えられるようにもなっていますし、最初から順番に読んでいってもいいと思います。わたしは最初から順番に読んでいったタイプですが、実機を触りながらのハンズオン形式で取り組めたので、広く浅い知識習得ができたと思います。

* https://backstage.forgerock.com/docs/openam/13.5

続いて、「**すぐ触れる状態となっている**」です。これは、数回前の[Securing OpenAM](http://qiita.com/nanazero/items/bb35b9f451a0f0b45e4e)でも少し触れましたが、初期セットアップが完了した時点で、ある程度のユースケースの実装ができるような状態となっています。また、OAuth 2.0やOpenID Connect、特定のSaaSとSAMLで接続するといったユースケースも、ウィザード形式でサクサクっと設定することができます。

<img width="891" alt="002.JPG" src="https://qiita-image-store.s3.amazonaws.com/0/148404/187398a6-5c43-fed9-23b6-cad4bc79fa57.jpeg">

最後が、「**まずまず軽量である**」です。今の時代、メモリーが4GB未満であるとか、VT対応していないCPUというのも少なくなってきた（のかなぁ？）と思います。そのぐらいのスペックのPCが手元にあれば、すぐに触ることができます。わたしの手元のPCもメモリーが4GBとなっていますが、OpenAMとRelying Party用のApacheのVMを稼働させるぐらいなら特に問題ありませんでした。ローカルでPoCをやって、環境を調達するということもやりやすいですね。

以上が、わたしが「OpenAMは誰でも、簡単に、すぐに触れる」と考えている理由となります。

## 関連技術の理解ができると前進する

じゃぁ、触るだけで十分な理解ができるのか？という疑問がでてくると思いますが、「**理解はできないと思いますが、やりたいユースケースに依る**」となります。
たとえば、Web Agentを使ったWeb Applicationの認証と認可、認証のモジュールとチェーンを使った多要素認証程度であれば、「機能を使う」という範疇で収まると思います。しかし、OAuth 2.0やOpenID Connect、SAMLなどの技術を使用する場合は、仕様の理解が少なからず必要だと思っています。理由としては、

1. これらの技術はクロスドメイン環境下、インターネットフェイシング環境下で使用される前提なので、セキュリティを意識する必要がある
2. 使うだけだと、なぜそれが安全なのかわからない
3. それがわからないと実装できない、実装してもらえない、だれもついてこない

と考えています。ゆえに、Identity Federationをつかって、SSOやAPI認可、ソーシャルログインをやりたい場合は、**みんなで勉強会しましょう**。ひとりで学ぶのは辛いことです。(◞‸◟)

Advent Calendarの中でも、数回ほど取り上げましたが、勉強するのに役に立ったサイトを並べます。

* [OpenID Foundation Japan](http://www.openid.or.jp/document/)
* [IPAのOAuth2.0](https://www.ipa.go.jp/security/awareness/vendor/programmingv2/contents/709.html)
* [IPAのOpenID Connect](https://www.ipa.go.jp/security/awareness/vendor/programmingv2/contents/104.html)

あと、最近知ったのですが、OpenID Foundationが**「企業でOpenID Connectを使えるような支援をするドキュメント」**をリリースしています。ありがたや。

* https://www.openid.or.jp/news/eiwg_utilization_guideline_2.0.pdf
* https://www.openid.or.jp/news/eiwg_implementation_guideline_1.0.pdf

## 運用まで考えられると本番環境で使える

運用って一口でいうと、とても範囲が広いのですが、ここでお話ししておきたい**わたしが一番実現したい運用**は以下のものです。

* **Identity Federation技術で連携できないアプリケーションはうちの会社では運用にのりませーん、残念でしたーm9(^Д^)ﾌﾟｷﾞｬｰ**

これってすごく大変なことだと思います。ただ、これができないことによって発生する**運用**や**リスク**、**検討時の手間**を考えると、わたしたちの会社のアプリケーションの選定基準に入れていいと思うのです。（~~わたしたちの会社はIdentity Federationできないアプリはゴミだと思ってます~~）

特に、IAMがありとあらゆるアプリケーションのアイデンティティ関連の実装を引き受けるというポリシーをもった基盤なのであれば、**どうやってIAMにつなげよっか？**なんて検討はすごく無駄な時間なんだと思います。そんな**ゴリ押しの技術**に、お金を払うなんてもったいないと思いませんか？
だから、[1日目](http://qiita.com/nanazero/items/cd4b61f0f56ed7c83b21)でも述べた通り、**「なんでか知らないけど、フェデレーションできないすごく可哀想なレガシー（笑）なアプリ」**はさっさと無くなればいいと思うのです。絶対、既存のアプリケーションだろうがFederation対応した方が運用が簡単だし、お金もかかんないですよ。

## 〆

OpenAMはアイデンティティ技術を学ぶ良い教材であり、本日紹介した「**試す -> 学ぶ -> 考える**」のステップをおけば、大概の企業で採用できるものになると思います。わたしは、初秋ぐらいからOpenAMを触り始めたわけですが、自社の人間を~~騙す~~説得して、「うちで使ってみよう！」と思わせるぐらいのことはできました。ただし、本題の「むずかしいの？」という問いにたいする答えは、**「ひとりでやると難しい」**です。わたしは**ひとり**で細々と勉強してたのですが、正直しんどかったです。

ただ、**「OpenAM ≒ シングルサインオンするOSS」という印象が徐々に変わっていくのは楽しかった**です。これから学ぶ人には、この意識が変わる瞬間を是非体験してほしいなと思いました。

なんだか語り足りないですが、クリスマスなので、このへんで失礼します。

「ひとり OpenAM Advent Calendar 2016」でございました。

ばい！