はじめに
IT業界に入って5年目にしてログインAPIを作ることになり、SAML認証に出会いました。
恥ずかしながらWEB一般的に使われる認証認可の仕組みを理解しておらず、盛大にハマりました。
今後の勉強のためにSSO、SAMLのほか、OAuth、OpenID、OpenID Connectについてまとめました。
理解の浅い箇所がありますが、お手柔らかにしていただけると幸いです。
SSO(シングルサインオン)とは
1つのログインIDとパスワードで複数のWEBサービスにログインできる仕組み
SSOの登場人物
- クライアント(=ユーザー)
- SP(Service Provider)
- IdP(Identity Provider)
SSOの仕組み
エージェント方式
- Webアプリケーションサーバーに仲介役の「エージェント」というソフトを入れる
- Cookieを利用
- Webアプリケーションサーバー内のエージェントは、ユーザーログイン状態/アクセス権限を問い合わせ、認証状態を確認することで、シングルサインオンを実現
リバースプロキシ方式
- ブラウザとWebアプリケーションサーバ間に「リバースプロキシ」サーバを設置
- 「リバースプロキシ」サーバにエージェントソフトを導入することで、シングルサインオンを実現
代理認証方式
- ログイン対象のWebアプリケーションに対して、ユーザーの代わりにID/パスワードを送信
- 代理入力することによってログインを完了させ、シングルサインオンを実現
フェデレーション方式
- 異なるドメイン間で、パスワード等の情報を渡すことなく、安全に認証されたユーザーの情報を連携することで、シングルサインオン(SSO)を実現
- フェデレーション方式に使えるプロトコルは標準化が進められており、現在ではSAMLやOpenID Connectが使用されている
SAML(Security Assertion Markup Language)
- ユーザーの認証や属性、認可に関する情報を記述するマークアップ言語
- SAMLを使えばクッキーを利用せずに認証情報の伝達が可能
OAuthとは
準備中
OpenIDとは
準備中
OpenID Connectとは
準備中
参考文献
全般
- https://www.goodpic.com/mt/archives2/2008/01/openid_oauth.html
- https://www.slideshare.net/tkudo/openid-connect-devlove
SSO
SAML
- https://japan.entrust.com/column/ai/small.html
- https://auth0.com/blog/jp-how-saml-authentication-works/
OAuth & OpenID & OpenID Connect
- https://www.ibm.com/support/knowledgecenter/ja/SSEQTP_liberty/com.ibm.websphere.wlp.doc/ae/cwlp_openid_connect.html
- https://www.ogis-ri.co.jp/otc/hiroba/technical/openid-connect/chap1.html
- https://www.sakimura.org/2011/05/1087/
- https://www.buildinsider.net/enterprise/openid/connect
- https://christina04.hatenablog.com/entry/2015/01/26/194841
- https://qiita.com/TakahikoKawasaki/items/e37caf50776e00e733be
- https://qiita.com/TakahikoKawasaki/items/498ca08bbfcc341691fe
- https://tech-lab.sios.jp/archives/8651