Slide 1

Slide 1 text

OAuthからOIDCへ ― 認可の仕組みが認証に拡張され るまで TECH PLAY主催LT大会 #2 yamatai12 1

Slide 2

Slide 2 text

自己紹介 yamatai12(Webエンジニア) SNS X(taiyama1212) Qiita(yamatai12) Zenn(yamatai12) 2

Slide 3

Slide 3 text

OAuthって、Googleログインでよく見るけど 認証の仕組みでしょ? 3

Slide 4

Slide 4 text

実は“認可”なんです 4

Slide 5

Slide 5 text

今日は以下の順で説明していきます OAuthとは → 認可と認証の違い → OIDCへ 5

Slide 6

Slide 6 text

OAuthとは ユーザー(リソース所有者)が、外部のアプリ(クライアント)に自分の代わりにな って保護されているユーザー情報(保護対象リソース)への限定的なアクセス権を与え る仕組みのこと。 6

Slide 7

Slide 7 text

7

Slide 8

Slide 8 text

OAuthは認可の仕組み 8

Slide 9

Slide 9 text

認可とは 何ができるか(リソースを利用すること)を許可する仕組みのこと。 9

Slide 10

Slide 10 text

OAuthは認証の仕組みではないのか? 10

Slide 11

Slide 11 text

認証とは アクセスしてきたユーザーが誰であるかを特定すること そのユーザーがそのアプリケーションに存在するか確認すること 11

Slide 12

Slide 12 text

OAuthは認証ではなく認可の仕組み(1/2) 認可サーバーから発行されるアクセストークンでは、以下が確認できない その認可したユーザーが実際に認可サーバー上に存在していること(認証済みである こと) 12

Slide 13

Slide 13 text

OAuthは認証ではなく認可の仕組み(2/2) アクセストークンはAPI(保護対象リソース)にアクセスする為のもの ↓ つまり、ユーザーが存在するのか、誰であるのかは分からない 13

Slide 14

Slide 14 text

例)Google Calendar APIへのアクセス権に関する同意画面 見た目は認証(ログイン)しているようだが、 実際には「APIへのアクセス権を与える」=認可を行っている 14

Slide 15

Slide 15 text

OpenID Connect(OIDC) OAuthを基盤とした認証の仕組み 15

Slide 16

Slide 16 text

OAuthとOpenID Connect(OIDC)両者の対応表(1/4) 説明 OAuth OpenID Connect (OIDC) 自分の情報を持つ本人 リソース所有者 エンドユーザー 認可後にトークンを受け取るア プリ クライアント リライングパーティ (RP) トークン発行を行うサーバー 認可サーバー アイデンティティプロバイダ (IdP) ユーザー情報を持つAPI 保護対象リソー ス UserInfoエンドポイント 16

Slide 17

Slide 17 text

OAuthとOpenID Connect(OIDC)両者の対応表(2/4) 説明 OAuth OpenID Connect (OIDC) 自分の情報を持つ本人 リソース所有者 エンドユーザー 認可後にトークンを受け取るア プリ クライアント リライングパーティ (RP) トークン発行を行うサーバー 認可サーバー アイデンティティプロバイダ (IdP) ユーザー情報を持つAPI 保護対象リソー ス UserInfoエンドポイント 17

Slide 18

Slide 18 text

OAuthとOpenID Connect(OIDC)両者の対応表(3/4) 説明 OAuth OpenID Connect (OIDC) 自分の情報を持つ本人 リソース所有者 エンドユーザー 認可後にトークンを受け取るア プリ クライアント リライングパーティ (RP) トークン発行を行うサーバー 認可サーバー アイデンティティプロバイダ (IdP) ユーザー情報を持つAPI 保護対象リソー ス UserInfoエンドポイント 18

Slide 19

Slide 19 text

OAuthとOpenID Connect(OIDC)両者の対応表(4/4) 説明 OAuth OpenID Connect (OIDC) 自分の情報を持つ本人 リソース所有者 エンドユーザー 認可後にトークンを受け取るア プリ クライアント リライングパーティ (RP) トークン発行を行うサーバー 認可サーバー アイデンティティプロバイダ (IdP) ユーザー情報を持つAPI 保護対象リソー ス UserInfoエンドポイント 19

Slide 20

Slide 20 text

20

Slide 21

Slide 21 text

IDトークンとは 認可サーバーで認可された後に取得できるトークン IDトークンはリライングパーティ(クライアント)の認証の為に使われる 21

Slide 22

Slide 22 text

IDトークンの使われ方 リライングパーティはIDトークンを検証し、 信頼できるアイデンティティプロバイダから発行された場合に ユーザーの認証を完了とする。 22

Slide 23

Slide 23 text

スコープとは リライングパーティ(外部アプリ)が認可サーバーにアクセス権を要求する際 に指定するもの 23

Slide 24

Slide 24 text

GoogleCloudのスコープの設定 24

Slide 25

Slide 25 text

スコープがopenid だけだとユーザーが誰であるか分 からない スコープに openid があると 「このユーザーが認可したユーザー本人である」ことは確認できる。 しかし「誰なのか」は分からない 25

Slide 26

Slide 26 text

UserInfoエンドポイントとは ユーザー情報を持つAPIのこと 26

Slide 27

Slide 27 text

email と profile のスコープを追加することで リライングパーティはUserInfoエンドポイントからユーザー情報を取得できる 27

Slide 28

Slide 28 text

なぜOIDCは「認証」と言えるのか? 「本人確認ができる」+「誰なのかが分かる」を統合的に提供し ているから 要素 保証すること IDトークン ユーザーが本人であること UserInfoエンドポイント その人が誰か 28

Slide 29

Slide 29 text

まとめ OAuthは「できること」を許可する仕組み (認可) OIDCは「誰であるか」を確かめる仕組み (認証) OIDCはOAuthを基盤とした認証の仕組み 29

Slide 30

Slide 30 text

参考(speakerdeckのdescriptionに記載) https://qiita.com/TakahikoKawasaki/items/498ca08bbfcc341691fe https://www.shoeisha.co.jp/book/detail/9784798159294 https://qiita.com/masaha03/items/927abc3c6b93911fb703 https://developers.google.com/identity/openid-connect/openid-connect?hl=ja https://cg-support.isr.co.jp/hc/ja/articles/4661444824473-アイデンティティプロバ イダーとは https://tech.iimon.co.jp/entry/2025/05/13/180000 https://zenn.dev/bonvoyage/articles/5dda6a1effd022 https://www.hitachi-solutions.co.jp/iam/saml.html https://www.shoeisha.co.jp/book/detail/9784798159294 30

Slide 31

Slide 31 text

https://www.oreilly.co.jp/books/9784873116860/ https://tech.iimon.co.jp/entry/2025/05/13/180000 https://zenn.dev/takamin55/articles/538711ed6fd48d https://atmarkit.itmedia.co.jp/ait/articles/1708/31/news124.html 31