今日は、OAuthとSAMLという、情報セキュリティで良く使われる技術の違いをわかりやすく解説します。
ちなみに私はかつてこの2つの違いをなかなか理解できずにいました。
そんな過去の私でも理解できるように噛み砕いて解説しますね。
結論
- OAuthは、「利用していいよ」と許可を与える技術です。
- SAMLは、「この人は既にログインしてますよ」と証明して、その情報を共有する技術です。
要するに、OAuthは「許可」、SAMLは「認証」を目的としています。
ちなみに両者とも「SSO」の一種です。
SSO(Single Sign On)とは、一度のユーザー認証で複数のシステムやサービスにアクセスできる仕組みです。
OAuthって何だろう?
OAuthは「許可(Authorization)」を主な目的としている技術です。
「このアプリやサービスに、この部分の情報だけ使わせていいよ」と許可を与える場面で使われます。
たとえば、「メールアプリ」と「カレンダーアプリ」があります。
あなたがカレンダーにメールの情報をインポートしたいとします。このとき、OAuthを使うと、カレンダーにメール情報を使わせることを許可しつつも、メールのログイン情報などを直接渡すことはありません。
安全で便利ですよね!
OAuthの特徴
- アクセストークンを使用して、リソースへのアクセスを制御する。
- JSONという単純な形式でデータを交換。
- アプリからAPIにリソースアクセスを要求する場面でよく使用される。
さらに詳しいOAuthの解説は以下の記事を御覧ください。
SAMLって何だろう?
SAMLは「認証(Authentication)」を主な目的としている技術です。
「この人は既にログインしたよ」という情報を別のシステムに伝える場面で使われます。
その人の身元がすでに特定されているので別のシステムも使用して問題ないよ、という認証になります。
ここがOAuthの「認可」と違うところですね。
例えば、あなたが勤める会社で、「一回のログインで、すべてのシステムを使えるようにしたい」という場面があります。このときに、SAMLを活用すると1つのログイン情報で別のシステムにもログインすることが可能になります。
何度もログインする必要がありませんし、システムによってID/パスワードを管理する必要がなくなります。
SAMLの特徴
- ユーザーの身元を確認し、異なるシステム間でユーザー情報を安全に交換する。
- XMLベースのアサーションを使用して、ユーザーの認証状態と属性情報を伝達する。
- 会社のSSOでよく使用される。
まとめ
OAuthとSAMLの違いをシンプルにまとめると以下の表のようになります。
OAuth | SAML | |
---|---|---|
目的 | 許可の提供 | 認証の提供 |
主な使用場面 | APIアクセスの制御 | 会社のSSOでの利用 |
データ形式 | JSON | XML |
実装の簡単さ | 比較的に簡単 | 複雑 |
違いをしっかり押さえましょう。
以上です。
コメント