#author("2025-12-13T15:57:31+09:00","default:irrp","irrp") #author("2025-12-27T21:54:53+09:00","default:irrp","irrp") →認証技術 →[[SSO関連]] ←SAML,Keycloakについてはこちら #contents *サブトピック [#oe913d1e] -Amazon Cognito関連 *一般 [#ve7333ac] -[[「OAuthは認可、OIDCは認証」という説明が人によりブレる理由とより理解を深めるために必要な考え方 - r-weblife>https://ritou.hatenablog.com/entry/2025/12/26/221852]] 2025.12 -[[技術勉強会 〜 OAuth & OIDC 入門編 / 20250528 OAuth and OIDC - Speaker Deck>https://speakerdeck.com/oidfj/20250528-oauth-and-oidc]] 2025.6 -[[アクセストークン (Access token) とは? · Auth Wiki>https://auth.wiki/ja/access-token]] 2025.7 -[[「なんでアクセストークンがいるの?パスワードを保存すれば良いのではないの?」というパワーワードを聞いたので説明してみる – @_Nat Zone>https://www.sakimura.org/2024/07/6093/]] 2024.7 -[["ID領域" に踏み込みたいエンジニアにすすめたい学習ステップ(2) : 複数アプリケーションが絡むID管理>https://zenn.dev/ritou/articles/85d331712c6170]] 2024.4 -[["ID領域" に踏み込みたいエンジニアにすすめたい学習ステップ(1) : 単一アプリケーションとID管理>https://zenn.dev/ritou/articles/522369cd4a7747]] 2024.4 -[[OAuth、OAuth2、OpenID Connect(OIDC)について簡単にまとめてみた #OAuth - Qiita>https://qiita.com/pike3/items/c7c98c6a3146a9159446]] 2024.4 *OpenID Connect [#v9f2ce38] -''OpenIDとOpenID Connectは別物''なので注意、略す場合はOIDCと略すのが一般的 -[[AWS ALBとMicrosoft Entra IDによるOIDC認証の検証と実装 - サーバーワークスエンジニアブログ>https://blog.serverworks.co.jp/alb-oidc-authentication-with-entra-id]] 2025.7 -[[OpenID Connectとは?OAuth2.0との違いを解説 - iimon TECH BLOG>https://tech.iimon.co.jp/entry/2025/05/13/180000]] 2025.5 -[[OIDC(OpenID Connect)はSSO(Single Sign On)をどのように実現しているか - r-weblife>https://ritou.hatenablog.com/entry/2025/05/12/023029]] 2025.5 -[[[Auth0] Auth0でシンプルに始めるOIDC & OAuth 2.0入門 | DevelopersIO>https://dev.classmethod.jp/articles/auth0-simple-oidc-oauth2/]] 2025.5 -[[[Auth0] Auth0とAWSのOIDC連携でセキュアなS3アクセス制御を実現する | DevelopersIO>https://dev.classmethod.jp/articles/auth0-aws-iam-s3/]] 2025.4 -[[OIDCって何なんだー?から、実際に使うまで - BASEプロダクトチームブログ>https://devblog.thebase.in/entry/2024/05/01/113000]] 2024.4 -[[フルスクラッチして理解するOpenID Connect (4) stateとnonce編 - エムスリーテックブログ>https://www.m3tech.blog/entry/2024/03/25/140000]] 2024.3 -[[フルスクラッチして理解するOpenID Connect (3) JWT編 - エムスリーテックブログ>https://www.m3tech.blog/entry/2024/03/12/150204]] 2024.3 -[[フルスクラッチして理解するOpenID Connect (2) トークンエンドポイント編 - エムスリーテックブログ>https://www.m3tech.blog/entry/2024/03/07/130000]] 2024.3 -[[フルスクラッチして理解するOpenID Connect (1) 認可エンドポイント編 - エムスリーテックブログ>https://www.m3tech.blog/entry/2024/03/05/150000]] 2024.3 -[[OpenID Connect と OAuth 2.0 を知りたい - Alternative Architecture DOJO>https://aadojo.alterbooth.com/entry/2023/12/21/000000]] 2023.12 -[[GitHub ActionsとGoogle CloudのOIDCの仕組みを理解する>https://zenn.dev/takamin55/articles/53d732b081ba66]] 2023.11 -[[仕様が読めるようになるOAuth2.0、OpenID Connect 入門 - Speaker Deck>https://speakerdeck.com/authyasan/shi-yang-gadu-meruyouninaruoauth2-dot-0-openid-connect-ru-men]] 2023.10 --[[Auth屋さんと学ぶ 仕様が読めるようになる OAuthとOpenID Connect 入門 - YouTube>https://www.youtube.com/watch?v=NyuaDiEd1ho]] -[[OIDCトークンによるAWSの一時的な認証情報の取得方法 | 豆蔵デベロッパーサイト>https://developer.mamezou-tech.com/blogs/2023/03/01/aws-sts/]] 2023.2 --AWS STS(AWS Security Token Service) -[[認証と認可の超サマリ OAuth とか OpenID Connect とか SAML とかをまとめてざっと把握する本>https://zenn.dev/suzuki_hoge/books/2021-05-authentication-and-authorization-0259d3f]] 2021.1 -[[OAuth & OpenID Connect 関連仕様まとめ - Qiita>https://qiita.com/TakahikoKawasaki/items/185d34814eb9f7ac7ef3]] 2016 -[[OAuth 2.0 + OpenID Connect のフルスクラッチ実装者が知見を語る - Qiita>https://qiita.com/TakahikoKawasaki/items/f2a0d25a4f05790b3baa]] 2016 --[[【第二弾】OAuth 2.0 + OpenID Connect のフルスクラッチ実装者が知見を語る - Qiita>https://qiita.com/TakahikoKawasaki/items/30fbd546935cea914e4f]] 2017 -[[OIDCでSAMLのIdP-initiatedなんとかみたいなことをやりたいみなさん>https://zenn.dev/ritou/articles/9366cc534860e5]] 2022.12 -[[OAuth 2.0 / OIDC を理解する上で重要な3つの技術仕様 - ログミーTech>https://logmi.jp/tech/articles/322822]] 2020 --JWS、JWE、JWT -[[OpenID Connectのフローや、JWKやPKCEについて解説 - ログミーTech>https://logmi.jp/tech/articles/322839]] 2020 -[[IDトークンが分かれば OpenID Connect が分かる - Qiita>https://qiita.com/TakahikoKawasaki/items/8f0e422c7edd2d220e06#7-id-%E3%83%88%E3%83%BC%E3%82%AF%E3%83%B3]] 2016 --JWS (RFC 7515)、JWE (RFC 7516)、JWK (RFC 7517)、JWT (RFC 7519)、ID トークンの説明 -[[なぜOpenID Connectが必要となったのか、その歴史的背景>https://www.slideshare.net/tkudo/openid-connect-devlove]] 2013 -[[認証規格まとめ 2021年版 - OpenID Connect & FIDO と OAuth 2.0 や SAML との違い - RAKUS Developers Blog | ラクス エンジニアブログ>https://tech-blog.rakus.co.jp/entry/20210930/auth]] 2021.9 --&ref(OIDC.png); --OpenID Connect は SAML の流れも組んでいますが、SAML はその生い立ちから社内ネットワーク1での利用を想定しています。そのため SAML での認証処理はユーザーの同意を必要とせずに処理することができます。認証処理は信頼されているサービスで行われるという前提です。 --SAMLはXMLベース、OIDCはJSONベースという実装上の違い --FIDO 2.0ではサーバーとクライアントの間でクレデンシャル情報を直接通信することがないことです。FIDO 2.0ではクライアントサイドで認証処理を行なった結果のみをサーバーに送信します。これにより通信経路からのクレデンシャル情報の流出を避けることができます。 -[[CircleCIがOIDCをサポートしたのでAWSと連携させてみた | DevelopersIO>https://dev.classmethod.jp/articles/circleci-supported-oidc-so-i-tried-linking-it-with-aws/]] 2022.3 *OpenID [#l10972c9] -OpenIDとは「異なるWebサービス間でユーザーの認証情報を受け渡す方法」を定義したプロトコル -[[OpenIDが果たす役割を知る>http://www.atmarkit.co.jp/fsecurity/rensai/digid03/01.html]] 2012.9.20 -[[OpenID/SAMLのつなぎ方とその課題>http://www.atmarkit.co.jp/fsecurity/rensai/kantara03/kantara01.html]] 2010.1.22 -%%[[OpenIDの襲来に備えよ!>http://koress.jp/2007/10/openid.html]]%% -[[mixi OpenID>http://developer.mixi.co.jp/openid]] --[[mixi OpenIDの技術面を解説するでござるの巻>http://d.hatena.ne.jp/ZIGOROu/20080820/1219218753]] 2008.8.21 *OAuth [#uba57a1b] -OAuthは認可の仕様であって認証の仕様ではない -OAuth 2.0ではIDトークンは規定されていないので「誰についての認可コードなのか」はわからない(OAuth 2.0の外で認証は行う前提) -[[OAuth2.0認証 アクセストークン取得 #API - Qiita>https://qiita.com/With21/items/6cedce22b7424c23d04e]] 2025.9 -[[OAuth 2.0 / OIDCを理解するために、自分でGoで実装してみた>https://zenn.dev/shimpei_takeda/articles/25c1b3c182919e]] 2025.8 -[[cloudflare/workers-oauth-provider: OAuth provider library for Cloudflare Workers>https://github.com/cloudflare/workers-oauth-provider]] 2025.6 -[[OAuth 2.0の認可エンドポイントにおける脆弱な実装例と対策について考える #Security - Qiita>https://qiita.com/task4233/items/3af1b3d2690b44979659]] 2025.1 -[[OAuthの仕組みを説明してHonoで実装してみる>https://zenn.dev/levtech/articles/a6e8910df5baa0]] 2024.7 -[[図解+手を動かして理解する!OAuthの仕組み #OAuth - Qiita>https://qiita.com/y-mae/items/c405ded1b71dee68f335]] 2023.11 -[[[前編] AWS CDKで API Gateway + Lambda 構成のREST APIを構築して Auth0 + Lambda Authorizerの認可機能を導入してみた | DevelopersIO>https://dev.classmethod.jp/articles/aws-cdk-api-gateway-lambda-rest-auth0-lambda-authorizer/]] 2023.3 --[[[後編] AWS CDKで API Gateway + Lambda 構成のREST APIを構築して Auth0 + Lambda Authorizerの認可機能を導入してみた | DevelopersIO>https://dev.classmethod.jp/articles/aws-cdk-api-gateway-lambda-rest-auth0-lambda-authorizer-part-2/]] 2023.3 -[[KotlinとSpring Security 6.xを使って、Introspection Endpointでトークンを検証するOAuth2のリソースサーバ−を実装する | DevelopersIO>https://dev.classmethod.jp/articles/kotlin-spring-security-6-x-oauth2-token-introspection/]] 2023.3 -[[OAuth2.0認証クライアントを自前実装で導入してみる【SolidStart+OAuth2.0+Box】 - RAKUS Developers Blog | ラクス エンジニアブログ>https://tech-blog.rakus.co.jp/entry/20230220/oauth]] 2023.2 -[[Python でシンプルに OAuth 2 する (urllib + oauthlib) - Qiita>https://qiita.com/hoto17296/items/2d2cb76d323099e9f8ab]] 2020 -[[最近話題の API の認証ってなに? ~OAuth編~>https://gblogs.cisco.com/jp/2021/09/whats-oauth/]] 2021.9 --2点の問題「セキュリティ問題」と「ユーザー制約問題」を解決 --セキュリティ問題:アプリケーションから別サイトのリソースへアクセスしたい場合、別サイトの認証情報をアプリケーション側へ共有する必要があった --ユーザ制約問題:各アプリケーションからの要求に対して異なるアクセス制限を適用する事ができなかった --OAuthによってこれらの問題が解決した -[[OAuthで登場する概念の説明(ロール、トークン、エンドポイント) | bbh>https://bbh.bz/2020/11/16/oauth-description-of-the-component/]] 2020.11 --ロール … OAuthにおける役割。リソースオーナー、クライアント、リソースサーバー、認可サーバーなど --リソースオーナー … リソース(画像)の所有者であり、サードパーティ製のアプリの使用者 --クライアント … サード―パーティ製アプリ。サーバーサイド、ネイティブアプリかは問わない。 --リソースサーバー … リソースを提供するサーバー。この例だとGoogleDriveのデータがあるサーバー。 --認可サーバー … クライアントの認可を行うサーバー。リソースサーバーと同じ組織が運営。(この例だとGoogle) --トークン … 認可されたことを証明するもの -[[【供養】OAuth をステートレスに出来るかも!と思ったけど、出来なくない? - Qiita>https://qiita.com/kyamamoto9120/items/e2ab7b0c95d8afb336bf]] 2022.7 -[[Firebase Auth の力を 120% 引き出すためのハック集>https://zenn.dev/ubie/articles/firebase-auth-hack]] 2022.4 -[[GitHub の OAuth 実装の仕様違反とセキュリティ上の考慮事項 - Qiita>https://qiita.com/TakahikoKawasaki/items/f1905f6a346f6ecc524f]] 2022.4 -[[「Googleでログイン」「Facebookでログイン」などのOAuth認証を模倣してパスワードを盗み出す手口が考案される - GIGAZINE>https://gigazine.net/news/20220322-oauth-phishing-site/]] 2022.3 --mr.d0x氏はこの手口を「Browser In The Browser(BITB)攻撃」と名付け、「わずかな違いに気付く人はほとんどおらず、基本的に本物と区別できなくなります」と述べています。 -[[OAuth 2.0 クライアント認証 - Qiita>https://qiita.com/TakahikoKawasaki/items/63ed4a9d8d6e5109e401]] 2019 -[[「OAuth」の基本動作を知る>http://www.atmarkit.co.jp/fsecurity/rensai/digid01/01.html]] 2012.8. ひと言でいうとOAuthは、 あるサービス(サービスA)上にエンドユーザーが所有するリソースや、そのエンドユーザーがアクセス権限を持つサービスAの各種機能に対し、 エンドユーザーの許可を受けたほかのサービス(サービスB)がアクセスするために エンドユーザーがサービスBに対して許可を与え サービスBがサービスAの提供するAPIにアクセスする際に許可を受けていることを証明する という一連のフローを、セキュアに実現することを目的とした「アクセス権限の付与」のためのプロトコルです。 -[[WebアプリにSNSアカウントでのログインを実装する >http://codezine.jp/article/detail/6572]] 2012.6.2 --OAuthによる認証 -[[一番分かりやすい OAuth の説明 - Qiita>https://qiita.com/TakahikoKawasaki/items/e37caf50776e00e733be]] 2017 -[[OAuthについて>http://www.machu.jp/diary/20070925.html#p01]] --OAuth は,第三者に対して,認証を要求するリソースへのアクセスを一時的に許可するためのプロトコルです. -[[OAuth 2.0 — OAuth>https://oauth.net/2/]] * OAuth認可フロー(OIDCでも共用) [#r45f1956] -RFC6749 に記載された4つの認可フロー --1. 認可コードフロー --2. インプリシットフロー(※通常使うべきではない) --3. リソースオーナー・パスワード・クレデンシャルズフロー(※通常使うべきではない) --4. クライアント・クレデンシャルズフロー(ユーザーが絡まないフロー。クライアントに対してアクセストークンを発行する) --5. リフレッシュトークンフロー(※期限が切れたトークンを更新するためのフロー) -[[OAuth 2.0のフローの種類と2つのエンドポイントについて解説 - ログミーTech>https://logmi.jp/tech/articles/322829]] 2020 --認可サーバーは基本的に2つのエンドポイントを提供します。その2つは、認可エンドポイントとトークンエンドポイント -[[OAuth 2.0 全フローの図解と動画>http://qiita.com/TakahikoKawasaki/items/200951e5b5929f840a1f]] 2017.4.28 **リソースオーナー・パスワード・クレデンシャルズフロー [#we8caf18] -[[Password Grant - OAuth 2.0 Simplified>https://www.oauth.com/oauth2-servers/access-tokens/password-grant/]] 2022.11 -[[How can I use the grant_type=password oauth flow with salesforce.com? - Stack Overflow>https://stackoverflow.com/questions/10890467/how-can-i-use-the-grant-type-password-oauth-flow-with-salesforce-com]] 2012 -[[Call Your API Using Resource Owner Password Flow>https://auth0.com/docs/get-started/authentication-and-authorization-flow/call-your-api-using-resource-owner-password-flow]] 2022.12 * JWT(JSON Web Token) [#i9a14819] -[[JWTの課題とPASETOという選択肢について - keisuke-tの日記>https://keisuke-t.hatenablog.com/entry/2025/12/04/094135]] 2025.12 -[[ALBのJWT検証をCognitoで試す #AWS - Qiita>https://qiita.com/ny7760/items/e0915401f09e72cd52c1]] 2025.11 -[[JWTを使った認証・認可の仕組みから実装まで理解する>https://zenn.dev/ippe/articles/jwt-auth-ippei]] 2025.7 -[[OAuthとOIDCの前にJWTから勉強しよう>https://zenn.dev/nttdata_tech/articles/cdf46cbf625147]] 2025.7 -[[Amazon Cognitoで構築するスケーラブルなWebアプリケーション3 - JWTからユーザー情報を取得する - サーバーワークスエンジニアブログ>https://blog.serverworks.co.jp/cognito-scalable-webapp-3-extract-user-info-from-jwt]] 2025.3 -[[初心者向けJWT講座:JSON Web Tokenを使った認証の仕組み>https://zenn.dev/collabostyle/articles/b08c7f29a2e94c]] 2025.1 -[[OAuth/OIDCのJWTまとめ #openid_connect - Qiita>https://qiita.com/TakahikoKawasaki/items/334423a5d87659a7f24d]] 2024.12 -[[jwcrypto入門: PythonでのJWT(JSON Web Token)の利用 | ジコログ>https://self-development.info/jwcrypto%e5%85%a5%e9%96%80-python%e3%81%a7%e3%81%aejwt%ef%bc%88json-web-token%ef%bc%89%e3%81%ae%e5%88%a9%e7%94%a8/]] 2024.5 -[[Java で Azure App Service の Azure AD 認証の JWT からユーザー情報を取得してみた - Qiita>https://qiita.com/mnrst/items/e1781d41b014250834c3]] 2023.1 -[[Auth0 java-jwtを使った素のJWT認証 | 豆蔵デベロッパーサイト>https://developer.mamezou-tech.com/blogs/2022/12/10/java-jwt-auth/]] 2022.12 -[[基本から理解するJWTとJWT認証の仕組み | 豆蔵デベロッパーサイト>https://developer.mamezou-tech.com/blogs/2022/12/08/jwt-auth/]] 2022.12 -[[マイクロサービスの認証・認可とJWT / Authentication and Authorization in Microservices and JWT - Speaker Deck>https://speakerdeck.com/oracle4engineer/authentication-and-authorization-in-microservices-and-jwt]] 2021 -[[【JWT】 入門>https://qiita.com/Naoto9282/items/8427918564400968bd2b]] 2021.3 * 参考資料 [#g4048ba3] -[[APIにリクエストを投げたい(VSCode REST Clientの紹介) - Qiita>https://qiita.com/mgmgmogumi/items/61f0b896580d3e6db2bb]] 2022