0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

調査メモ

Last updated at Posted at 2019-11-06

SAML2.0準拠のSSOを実装する事になったけど何をどうすればいいのか
あまりにも分からないので調査。
分からなすぎるのでアウトプットで一旦まとめてみる。
※※分からない人が分からない事を書いている、ただのメモ※※

そもそもSSOとは?

SSO=「シングルサインオン」
一度認証を通れば、その認証情報を使って、許可されているすべてのサービスを使える仕組みのこと。

シングルサインオンを実現する仕組みは4種類あり、
その内の1つが認証連携(フェデレーション)方式。
フェデレーション方式とは、クラウドサービス間を、パスワードの代わりにチケットと呼ばれる情報を受け渡しすることで、シングルサインオンを実現する方法。
フェデレーション方式に使えるプロトコル・標準規格の1つが「SAML」らしい。

プロトコルって何…?

コトバンクによると「コンピューターネットワークで通信を行うための手順や約束事。 伝送路、伝達方法、通信相手の特定、データの構成や表現方法などをあらかじめ規定したもの」だそうです。

SAMLとは

Security Assertion Markup Language(セキュリティ・アサーション・マークアップ・ランゲージ)の略。
前述の通りで考えると、SSOをフェデレーション方式で実装する時のお約束事のことらしい。
以下、さらに詳しく調査。参考URLの記述を列記してみる。

SAMLとは

  • 認証情報を受け渡しするときに使うことを目的として作られたXML形式の書式(と、あれやこれやの決まり事)
  • そもそもの出発点は「やり取りする認証情報は、どんな書式にしましょうね?」→「よし!XML形式をベースにして、こんな感じにしようぜ」

SAML認証方式の仕組み

  • SAMLとは異なるインターネットドメイン間でユーザー認証を行うための標準規格
  • IdP(Identity Provider)とSP(Service Provider)の2つの要素で構成される
  • Webサービスを提供するSP側がSAMLに対応していれば、IdPが提供する認証情報を利用しSSOを実現できる

SAML技術解説

  • 「AuthXML(AuthenticationXML)」と「S2ML(Security Services Markup Language)」という2つのセキュリティ標準を基にできている

なんかまたよく分からないのが出てきた……調べてみたら、
同様の技術として既に存在していた、Securant Technologies社のAuthXMLと、Netegrity社のS2MLという2つの規格を統合したものがSAMLだそうで。なるほど。

結局SAML2.0準拠って何すればいいの?

以下、2つの記事からシーケンス図を見比べてまとめてみる。
図は無いがこの記事も参考にしてみる→やさしい言葉で理解するSAML認証のまとめ

今更ですがSAMLのおさらい

https___qiita-image-store.s3.amazonaws.com_0_246440_134d987e-582a-7039-63e1-a455381e7acb.jpg


SAML2.0ベースのSSOをわかりやすく解説してみる

https___qiita-image-store.s3.amazonaws.com_0_100530_240000f6-5f70-1593-f453-506e09a7f017.png

  1. ユーザーはSPに対しアクセスする
  • ユーザーはSP未認証のため、SPはIdpにAuthnRequestを送信する(リダイレクト)
  • Idpはユーザーの認証状況を確認する。ここでは、既に認証済み(ログイン済み)とする
  • Idpはユーザーの認証情報をSAMLResponse(Idpの秘密鍵で署名する)としてSPに送信する(リダイレクト)
  • SPはSAMLResponseをIdpの公開鍵で検証する
  • SPはSAMLResponseに含まれる認証情報を基にSP側の紐づくアカウントで認証したことにする
  • SPにアクセスが許可され、利用する

  • IdP(Identity Provider)=認証情報を提供する側。認証情報を提供するシステム。
  • SP(Service Provider)=認証情報を利用する側。WEBサービスの提供側。クラウドサービス。
    クラウドサービスってことはAPIサーバーに使うAWSとかはこっちになる?のか?わからん。
    →なんか自分がすごく見当違いな事を言っている事だけは分かった。

どうやらSAML認証には、SPから流れが始まるSP-initiated SAMLと、Idpから流れが始まるIdP-initiated SAMの2種類があるらしい。
上記シーケンス図はどちらもSPから始まっているように見受けられるので、SP-initiated SAMLっぽい。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?