認証基盤

みなさん、こんにちは。KEYチームの矢納です。
最近ますます寒さが厳しくなってきましたね。体調を崩さないように気をつけてください。

さて、今回は認証基盤開発プロジェクトの紹介を行いたいと思います。 様々なクラウドサービスを簡単に使うことができるようにするためのプロジェクトです。

このプロジェクトで重要になるのは、やはり認証部分になります。強固な認証、ですが認証は簡単に。 また容易にクラウドサービスを使えるということで、ユーザ管理等もできなければなりません。

認証

認証の基本部分はミドルウェアに任せており、様々な認証プロトコルに対応しています。複数の認証プロトコルを利用していてもセッションを共有してくれます。

また、認証の情報を保存しておくDataBaseは、高稼働性、ハイパフォーマンス、容易なスケーラビリティなものを利用しています。莫大な認証情報、大量不可が想定されるなかで稼働し続けるものを選択して利用しています。

さて、少し認証の部分について話していきましょう。

強固な認証

従来の認証だと、ID/パスワードの認証だけです。このシステムでも基本の認証はID/パスワードで行います。ですが、パスワードはあまり変更が行われない、簡単なパスワードがよく使われたり、ID/パスワードはブラウザに覚えされる事が多いのでID/パスワードだけではとても強固な認証とは言えません。そこで今回のシステムでは、ワンタイムパスワード等を利用した2段階認証を取り入れてあります。

また二段階認証だけではなく着信認証を行うことができます。ID/パスワードを入力した後に、そのユーザに設定されている電話番号に電話がかかってきます。そこで認証コードを入力することにより認証成功となります。

容易な認証

さて、2段階認証などを行うことにより強固な認証を行うことができます。ですが、毎回クラウドサービスに直接アクセスし無ければならないのでしょうか?利用しているクラウドサービスが少ないのなら良いのですが、たくさんのサービスを利用する際に、直接アクセスのためのURLを覚えるのも、それらのブックマークを全てとるのは面倒でしかありません。

そこで各クラウドサービスへの入り口を一つにするポータルの出番です。このポータルにログインするだけで各クラウドサービスへのログインが可能になります。これで1回認証をすませば各サービスを利用できるSSO(Single Sign On)の実現です。

アーキテクチャ

各クラウドサービスへの利用は容易に行うことができるようになりました。では、ユーザ・セキュリティ等の管理はどうでしょうか?。それらを各々サービスで行うのは大変です。そこで、それら操作は一つのポータルから管理を行うことができます。では、このポータルはどのように作られているのか見てみましょう。

シングルページアプリケーション

Web画面はシングルページアプリケーションとして作られています。操作をする度に画面がフラッシュされることなく、スムーズな作業を行うことができます。これを実現しているのは、フロントMVCの一つであるBackbone.jsを使っています。jQueryでは面倒であったイベント処理やRESTなリクエストを送信するのは非常に楽ができます。また、Backboneだけでは少々手が届かない部分に手を加えてくれるMarionette.jsも使用しています。

バックサイドはJava

バックサイドはJavaで書かれており、WebフレームワークとしてSpringを使用しています。Spring4系のフレームワークを利用してアプリケーションが作られています。バックサイドはSpringをメインで使いますので、Springを使って簡単なWebアプリケーションを自分で作れるようになりました!管理側のDatabaseにはPostgresを使用しており、Version9から実装されたJSON型を使用しています。JSON型にすることにより、カラムの増減が発生した際の作業が軽減されます。また、JSON内部のパラメータを直接条件にも書くことができますし、インデックスもはることができます。

認証系と管理系は疎結合

管理系で追加したユーザは認証のDataBaseに反映する必要があります。直接認証DataBaseに修正をかけても良いのですが、認証系単体でも動くシステムなので認証系と管理系のシステムは疎結合で作られています。そこでユーザ等を作成した際には一部のステータスを変更しておき、予約状態にします。予約状態になっているデータを認証系へプロビジョニング(データ反映)をおこいます。いわゆるバッチですね。このバッチの部分もSpring系のフレームワークでSpring Batchを使用しています。データ取得部分・処理部分・後処理部分と構成が分かれており、基本的には処理部分を増やしていく形となっています。

システムの全体像

システムの全体像

最後に

さて、いかがだったでしょうか?認証基盤開発プロジェクトの大まかなシステムの説明を書いてみました。色々と省略して書いてしまった部分もあるので、"もっと詳しく知りたい"、"ここはどういう意味?"などと質問がある方は下記のメールまで気軽にメールしてください。答えれる範囲でお答えしていきたいと思います(^^;;

では、皆さん体調を崩さずに!!

Email:yanou at atware.co.jp