2
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?

OIDCとSAMLを初心者向けに整理

2
Posted at

はじめに

AWSやWebシステムを勉強していると、

  • OIDC
  • SAML
  • SSO
  • OAuth
  • IdP
  • SP

といった言葉をよく目にします。

特に「OIDCとSAMLは何が違うのか」「SSOとはどう関係するのか」が分かりにくかったため、この記事ではそれぞれの役割を整理します。


1. まず「認証」と「認可」

OIDCやSAMLを理解する前に、認証と認可の違いを押さえます。

認証(Authentication)

「あなたは誰ですか?」を確認することです。

ユーザー
 ↓
ログイン
 ↓
「このユーザーは田中さんです」

認可(Authorization)

「あなたは何をしていいですか?」を決めることです。

田中さん
 ↓
S3を閲覧できる
 ↓
ただし削除はできない

つまり、

認証 → あなたは誰?
認可 → あなたは何をしていい?

です。


2. OIDCとは?

OIDC(OpenID Connect)は、ユーザーを認証するためのプロトコルです。

OAuth 2.0をベースにしており、Webアプリやモバイルアプリなどで利用されています。

例えば「Googleでログイン」を考えると分かりやすいです。

ユーザー
   ↓
Webアプリ
   ↓
Google
   ↓
ユーザー認証
   ↓
認証結果
   ↓
Webアプリ
   ↓
ログイン完了

認証に成功すると、Googleなどの認証サービスからIDトークンが発行されます。

IDトークンには、例えば以下のようなユーザー情報が含まれます。

{
  "sub": "123456789",
  "name": "Taro",
  "email": "taro@example.com"
}

実際にはJWT形式で扱われることが多く、

「このユーザーは認証済みで、ユーザーIDは○○です」

ということをアプリ側で確認できます。

IDトークンとアクセストークン

OIDCでは、アクセストークンも登場します。

IDトークン
→ このユーザーは誰?

アクセストークン
→ このユーザーはAPIを利用していい?

ここは、認証と認可の違いとして覚えておくと分かりやすいです。


3. SAMLとは?

SAML(Security Assertion Markup Language)も、ユーザーを認証するためのプロトコルです。

特に企業向けのシステムで広く利用されています。

SAMLでは、以下の2つの用語がよく登場します。

  • IdP(Identity Provider):ユーザーを認証する側
  • SP(Service Provider):ユーザーが利用するサービス側

例えば、

ユーザー
   ↓
AWS
   ↓
Microsoft Entra ID(IdP)
   ↓
ユーザー認証
   ↓
SAML Assertion
   ↓
AWS(SP)
   ↓
ログイン

という流れになります。

SAML Assertionとは?

SAML Assertionは、

「このユーザーは認証済みです」

ということを表す認証情報です。

SAMLではXML形式のデータが利用されます。

<Assertion>
    <Subject>
        tanaka@example.com
    </Subject>
</Assertion>

実際には、署名や認証日時など、さまざまな情報が含まれます。


4. OIDCとSAMLの違い

OIDC SAML
正式名称 OpenID Connect Security Assertion Markup Language
主な目的 認証 認証
ベース OAuth 2.0 XML
認証情報 IDトークン SAML Assertion
主な形式 JWTなど XML
よく利用される場面 Web・モバイルアプリなど 企業向けシステムなど
サービス側の呼び方 Client SP

ざっくり言うと、

OIDC
↓
JWTなどを利用
↓
Web・モバイルアプリなどでよく利用


SAML
↓
XMLを利用
↓
企業向けシステムなどで広く利用

という違いがあります。


5. SSOとは?

SSOは Single Sign-On の略で、

1回ログインすれば、複数のサービスを利用できる仕組み

のことです。

例えば会社で、

             ┌── AWS
             │
社員 → 認証基盤 ── Slack
             │
             └── Microsoft 365

という環境があるとします。

社員が認証基盤に一度ログインすると、AWSやSlackなどを個別にログインせず利用できるようにします。

これがSSOです。


6. OIDC・SAML・SSOの関係

ここが一番重要です。

**OIDCとSAMLは「プロトコル」**で、**SSOは「仕組み」**です。

OIDC
└─ 認証プロトコル

SAML
└─ 認証プロトコル

SSO
└─ 1回のログインで
   複数サービスを利用する仕組み

そのため、

OIDC = SSO

でも、

SAML = SSO

でもありません。

OIDCやSAMLなどのプロトコルを利用して、SSOを実現できます。


7. AWSで考える

AWSを利用する企業では、例えば次のような構成があります。

社員
 ↓
Microsoft Entra ID
 ↓
SAML / OIDC
 ↓
AWS
 ↓
AWS Management Console

ここで認証基盤が、

「このユーザーは認証済みです」

という情報をAWSへ連携します。

その後AWS側で、

「このユーザーは何をしていいのか?」

をIAM RoleやIAM Policyなどで決めます。

つまり、

認証
↓
「あなたは誰?」
↓
Entra ID
↓
OIDC / SAML
↓
AWS

認可
↓
「あなたは何をしていい?」
↓
IAM Role / IAM Policy

と考えると分かりやすいです。


8. まとめ

最後に、3つを一言で整理します。

OIDC

Webアプリなどで利用される認証プロトコル。

SAML

企業向けシステムなどで広く利用されている認証プロトコル。

SSO

1回のログインで複数のサービスを利用できる仕組み。

つまり、

             認証プロトコル
            ┌─────────┐
            │         │
          OIDC       SAML
            │         │
            └────┬────┘
                 ↓
                SSO
        1回のログインで
        複数サービスを利用

と整理すると、3つの関係を理解しやすくなります。

2
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
2
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?