業務

シングルサインオン機能実装案件

はじめに

フリーランスの私が過去に携わったシングルサインオン機能実装案件について、
今回ご紹介したいと思います。

シングルサインオンとは

1つのIDとパスワードで認証を行い、複数のWebサービスやクラウドサービスにアクセスする仕組みです。

みなさんがよく使ってるGoogleアカウントとかをイメージしてもらえるとわかりやすいかと思います。

今回私が担当したシステムは通販サイトシステムで、1つのサービスだけでなく複数のWebサービスがあり、同じ会社のサービスなのにIDとパスワードもその分存在してしまうという状態でした。

そこで、IDとパスワードを一元化し、1つのIDとパスワードで複数のWebサービスを利用できるようにしたいというのが今回のシステム要件でした。

シングルサインオンの仕組み

シングルサインオンを実現するためにSAMLというXML形式の情報を暗号化してURLへ埋め込み、認証のやりとりを行うようにしました。

SAMLとはユーザーの認証や属性、認可に関する情報を記述するマークアップ言語です。SAMLを使用することで属性情報・アクセス制御情報の認可サービスを追加し、利用者の資格などの属性によりアクセスできるページ・Webサイトを制限したり、アクセス権限によってリソース へのアクセスを制限したりできます。

SAMLを使用した認証フローですが、以下の通りです。
認証サーバはCYBERNETさんが提供している「OneLogin」というクラウド型シングルサインオン・アクセスコントロールソリューションを使用した場合の例です。

http://www.cybernet.co.jp/onelogin/function/saml.html

使用した言語やフレームワーク

使用した言語はJavaでフレームワークはSpring4を使用しました。
Springは今回初めて利用したのでなかなか苦労しました。。。

使用したツール

SAMLのエンコード・デコードで以下のサイトを利用しました。

https://www.samltool.com/url.php

また、本案件ではAPIを何個か作ったので、リクエスト応答結果を確認できる以下のツール使用しました。このツールのおかげでスタブを作る必要なくなったのでだいぶ助かりました。

https://chrome.google.com/webstore/detail/advanced-rest-client/hgmloofddffdnphfgcellkdfbfbjeloo

さいごに

認証系の開発はあまりやったことなかったので、結構苦労しました。
しかもこれがフリーランス初案件でした。。。

発注先のプロパーや別会社の人に聞きまくり、なんとか乗り切りました!笑

自分で調べるのも大事だけど、やはり手が止まるのが一番だめなので、
最初のうちは嫌がられるの覚悟で聞きまくるのも大切だなーと思いました。