「[[マイクロソフト系技術情報 Wiki>http://techinfoofmicrosofttech.osscons.jp/]]」は、「[[Open棟梁Project>https://github.com/OpenTouryoProject/]]」,「[[OSSコンソーシアム .NET開発基盤部会>https://www.osscons.jp/dotNetDevelopmentInfrastructure/]]」によって運営されています。 -[[戻る>クレームベース認証]] * 目次 [#o85bc7da] #contents *概要 [#w91634d5] [[OpenID]] / [[OAuth]] / [[OpenID Connect]]について。 *用語 [#cf76f7e0] **[[OpenID]] [#zf2b18ee] -End User --Consumerに対して自分のIdentityの認証を要求しようとするユーザ --Consumerに紹介状(OpenID Token)を送るIdP(Identify Provider)に加入する必要がある。 -User-Agent --End Userが所有するWebブラウザ --特別なプラグインやJavaScriptは不要 -Consumer --End Userが入力したID(Identifier)を使用し、IdP(Identify Provider)に対して認証要求するWebサービス --ConsumerはいずれのIdP(Identify Provider)に対しても認証要求を遂行する必要がある。 --&color(red){OpenID 2.0};からはRelying Party(RP)と名称が変更されている。~ OpenIDでは、STS相当が独立しておらず、当該機能がRPとIdp内に同梱されている。 -Identifier --End Userが所有するURL(httpまたはhttpsをschemeとするURI) --IdP(Identify Provider)は、Identifierを使用して認証する。 --&color(red){OpenID 2.0};からはXRIというURIを拡張した形式で表されたものを指す。 --Claimed Identifier ---End Userが自分で所有していると主張するIdentifier ---Consumerによってまだ確認されていないIdentifier --Verified Identifier~ ConsumerがEnd Userが所有していると認めたIdentifier --User-Supplied Identifier~ &color(red){OpenID 2.0};からの用語で、 ---End UserによってRPに対して提示されるIdentifier ---Claimed IdentifierまたはOP Identifierの総称 -Identify Provider(Idp) --End Userが所有するClaimed Identifierの暗号化された証明(紹介状)を発行。 --&color(red){OpenID 2.0};からはOpenID Provider(OP)とも呼ばれる。 -&color(red){OpenID 2.0};から追加されたOpenID Provider(OP)用語 --OP Identifier~ OPを表すIdentifier --OP EndPoint URL~ OPのエンドポイントのURL --OP-Local Identifier ---使用するOPが内部的に使用するユーザID。 ---OPがOP上の認証処理等で使用する。 **[[OAuth]] [#b0ee56b8] 用語に関しては、[[OpenID]]と≒。 -Resource Owner ([[OAuth]] 1.0では、User) --Clientにアクセス権限の付与を行うユーザ自身 --ClientにAccess Tokenを送るAuthorization Server~ ([[OAuth]] 1.0では、OAuth Service Provider)に加入する必要がある。 -User-Agent --End Userが所有するWebブラウザ --特別なプラグインやJavaScriptは不要 -OAuth Client ([[OAuth]] 1.0では、OAuth Consumer)~ OAuth Serverが提供するAPIを利用する側のサービス --Instagram --Foursquare --Pinterest -OAuth Server ([[OAuth]] 1.0では、OAuth Service Provider) --[[OAuth]]をサポートしたAPIを提供しているサービス ---Twitter (1.0) ---Facebook --([[OAuth]]2.0から)OAuth Service Providerは更に以下の2つに分類される。 ---Authorization Server~ 認証・認可のサーバー機能(認証チケットとAccess Tokenの発行) ---Resource Server~ Access Tokenを受けてリソースアクセスを提供する -参考 --Differences Between OAuth 1 and 2 - OAuth 2.0 Servers~ https://www.oauth.com/oauth2-servers/differences-between-oauth-1-2/ **[[OpenID Connect]] [#ka600dc9] -認証に関しては、~ OpenID Authentication 2.0の置き換えであるため、~ [[OpenID Authentication 2.0の用語>#zf2b18ee]]を使用する -ただし、実装に関しては、~ [[OAuth]] 2.0の拡張なので、[[OAuth 2.0の用語>#b0ee56b8]]も使用する **[[Financial API (FAPI)]] [#o06f7a84] ・・・ *詳細 [#cf72e401] 中央集権型でない、分散ID認証システムのオープン仕様。 -ブラウザベースの認証APIの標準化から始まった。 -トークン(クレーム)として、 --[[OpenID]]~ 紹介状(OpenID Token)を受け取るか? --[[OAuth]] / [[OpenID Connect]]~ 合鍵(Bearer Token)を受け取るか? >の違いがある。 **[[OpenID]] [#ia20f0b8] OpenID財団の登録商標。 代表的な使用例として、 -OpenID Authentication 2.0 -OpenID Connect -OpenID Foundation などがあるが、 ここでは、OpenID Authentication 1.1, 2.0を指す。 要求元であるWebサイトに対して、 -あるユーザが認証された旨の情報、 -認証をどのように行ったかの情報、 -当該ユーザの属性情報を、 紹介状(OpenID Token)として、提供元となるIdpが転送するプロトコル。 -OpenID 1.1:Consumer経由で紹介状を作成して送信する公証人Idpを呼び出す。 -&color(red){OpenID 2.0};:RP経由で紹介状を作成して送信する公証人OPを呼び出す。 -[[OpenID]]の仕様上、誰でもConsumer(RP)やIdp(OP)になれるという点から、~ 特にConsumer(RP)はどのIdp(OP)を信用したらよいかという問題が残る。 **[[OAuth]] [#j62abb2c] ***概要 [#q1c9b56a] -紹介状(OpenID Token)ではなく、合鍵(Bearer Token)を渡し、権限付与を行うプロトコル。 -ユーザが外部サービスにパスワードを教えることなく、~ サービス間でユーザの同意のもとにセキュアにユーザの権限情報(合鍵)を受け渡しする。 --エンドユーザはサービスAに対してあるサービスB上のリソースや機能に~ 取得 / 追加 / 更新 / 削除などのアクセス許可を与える。 --サービスAは、エンドユーザの許可を受けたサービスB上のリソースや機能にアクセスする。 ***問題点 [#zb09b7ae] -[[OpenID]]よりも[[OAuth]]認証をしたいというサイトが増えてきている。 -しかし、認証機能は無いとされているので、拡張仕様で、~ "安全な"紹介状(クレーム)を発行する仕組みを追加で作り込む必要がある。 **[[OpenID Connect]] [#jd817194] ***概要 [#rf454b18] -OpenID Authentication 2.0 のプロトコルを引き継ぐことをせず、~ [[OAuth]] 2.0を拡張し、正しく"認証"する次世代のOpenID。 --OpenID Authentication 2.0 の"認証"は、[[OpenID Connect]]によって置換えられた。 --サイトにアクセスする方法は[[OAuth]] 2.0 の Resource Access と同じ。 -[[OAuth]] 2.0 ベース~ OpenID Authentication 2.0との違いは、~ 紹介状(OpenID Token)相当のコピーだけが入っているロッカーの合鍵を渡す所。 --ロッカー:UserInfo (ユーザ情報)Endpoint --合鍵:UserInfo Endpointへの合鍵を発行する。 --ClientとResource Serverは、 ---この合鍵の発行者を信頼し、 ---合鍵の正統性の検証が可能。 ***設計思想 [#uaf67d53] -モジュラーデザイン -簡単なことは簡単に -難しいことも可能に -NIST SP 800-63-1で定義されている全ユーザ認証要件(LoA)への対応が可能。~ 金融システムや電子政府/行政システムにも利用できることを意味している。 **[[Financial API (FAPI)]] [#i97dedf3] 金融機関API向けJSON data schema, REST APIの、~ セキュリティ+プライバシー・プロファイルの勧告(チェックリスト)を提供 **その他 [#b67a0118] ***ライブラリ [#q3c0e8d6] -色々ある。 --Azure AD 認証ライブラリ (ADAL) --Azure AD v2.0 認証ライブラリ (MSAL) --しかし、[[OAuth / OpenID Connectクライアントは、生でも書ける。>https://opentouryo.osscons.jp/index.php?%E6%B1%8E%E7%94%A8%E8%AA%8D%E8%A8%BC%E3%82%B5%E3%82%A4%E3%83%88%E3%81%AE%E3%83%95%E3%82%A1%E3%83%BC%E3%82%B9%E3%83%88%E3%82%B9%E3%83%86%E3%83%83%E3%83%97%E3%82%AC%E3%82%A4%E3%83%89%20%284%29]] ***[[STS系ミドルウェア]] [#n4002112] *選定 [#i71c7e02] コンシューマー向け技術と言える。~ (REST/JSONベースで、Webアプリケーションに組み込みやすい)。 -OpenID 2.0とOAuth 1.0 --仕様は、同時期に策定された。 --ユーザから見た画面遷移もほぼ同じ --開発者の間で機能が比較された。 -OAuth 2.0 --合鍵(Bearer Token)を渡し、認可する仕組み。 --認証機能は無いとされているので、拡張仕様で、~ "安全な"紹介状(クレーム)を発行する仕組みを追加で作り込む必要がある。 -OpenID Connect~ OAuth 2.0を拡張して、OpenID 2.0を置き換えたもの。 **[[OpenID]] [#n87e85c5] -OpenID 2.0 (OAuthとの比較)~ OpenID 2.0とOAuth 1.0の仕様は、同時期に策定された。 -メリット --一度の実装で複数のOPに対応できる。 --新たなOPが増えた場合もコストをかけずに対応が可能 --ユーザー認証を実装でき、その上サービス独自のAPIを利用できる。 -デメリット --OAuth 1.0のように、サービス上のAPIに権限を付与する機能はない。 **[[OAuth]] [#j2acee06] -OAuth 1.0 (OpenIDとの比較)~ OpenID 2.0とOAuth 1.0の仕様は、同時期に策定された。 --メリット ---Access Tokenを返すことで、(認証+)APIに対する権限付与ができる。 ---上記のAccess Tokenを使用して、プロフィール情報(=クレーム的なもの)~ を取得できるAPIが提供されれば、認証の処理を実装できる。 --デメリット ---認証結果の定義や認証ポリシーの指定方法が存在しない。 ---従って、OAuth の Clientと、Resources Serverに追加実装が必要になる。 -OAuth 2.0~ OAuth 1.0に以下の改良を加えている。 --HTTPSを必須にし、署名をなくし、Access Token取得も簡略化 --Request Tokenを無くし、Access Tokenのみでリソース取得が可能に --Webアプリも含め、4つのクライアントプロファイルを仕様化 --詳しくは「[[OAuth 1.0とOAuth 2.0の違い>OAuth#s44d10cb]]」を参照。 **[[OpenID Connect]] [#wb384e98] 次世代OpenID -OpenID 2.0のプロトコルを引き継ぐことをせず、~ OAuth 2.0を拡張して、OpenID 2.0を置き換えたもの。 --これまで足りなかった以下のような機能拡張がされている。 ---認証結果のやりとり ---統一的な属性情報の提供 ---OP探索、動的なRP登録 ---RPに戻った後のセッション管理 -実装(RP) --RPはOAuth 2.0のリクエストを少し変更するだけで、利用できる。~ OAuth 2.0のリクエストパラメータに特定の値を指定するだけ。 --複数のクライント・フローを実装するのは手間。~ しかし、Idpを開発するのに比べれば、RPを開発する方が楽。 -用途 --NIST SP 800-63-1で定義されている全ユーザ認証要件(LoA)への対応が可能。 --金融システムや電子政府/行政システムにも利用できることを意味している。 **[[Financial API (FAPI)]] [#e531e56b] 金融機関APIのJSON data schema, REST APIで利用。 *[[課題解決>OAuth / OpenID Connectによる課題解決]] [#a1e9e46c] *参考 [#ae552f75] -OpenIDやOAuthやらの比較 - Carpe Diem~ http://christina04.hatenablog.com/entry/2015/01/26/194841 -OAuth 2.0&OpenID Connectユースケースと関連仕様まとめ - Build Insider~ http://www.buildinsider.net/enterprise/openid -アプリ開発で知っておきたい認証技術 - OAuth 1.0 + OAuth 2.0 + OpenID Connect~ https://www.slideshare.net/ngzm/oauth-10-oauth-20-openid-connect **用語 [#u06c8014] -誰にも頼まれてないのに次世代Identifier用語集を勝手に定義してみた - 豆無日記~ http://nobeans.hatenablog.com/entry/20090202/1233585856 -OpenIDの仕様と技術 - @IT --(1):仕様から学ぶOpenIDのキホン (3/3)~ http://www.atmarkit.co.jp/ait/articles/0707/06/news135_3.html --(5):OpenID Authentication 2.0時代の幕開け (1/3)~ http://www.atmarkit.co.jp/ait/articles/0802/19/news133.html **歴史的背景 [#y12986e5] -なぜOpenID Connectが必要となったのか、その歴史的背景~ http://www.slideshare.net/tkudo/openid-connect-devlove -OpenID Connect 入門 〜コンシューマーにおけるID連携のトレンド〜~ http://www.slideshare.net/kura_lab/openid-connect-id -デジタル・アイデンティティ技術最新動向(3):OpenIDが果たす役割を知る - @IT~ http://www.atmarkit.co.jp/ait/articles/1209/20/news140.html **デジタル・アイデンティティ技術最新動向 [#s11db885] -デジタル・アイデンティティ技術最新動向 連載インデックス - @IT~ http://www.atmarkit.co.jp/fsecurity/index/index_digid.html --「OAuth」の基本動作を知る~ http://www.atmarkit.co.jp/fsecurity/rensai/digid01/01.html --RFCとなった「OAuth 2.0」――その要点は?~ http://www.atmarkit.co.jp/fsecurity/rensai/digid02/01.html --OpenIDが果たす役割を知る~ http://www.atmarkit.co.jp/fsecurity/rensai/digid03/01.html --「OpenID Connect」を理解する~ http://www.atmarkit.co.jp/fsecurity/rensai/digid04/01.html --UDIDにおけるセキュリティ&プライバシー問題~ http://www.atmarkit.co.jp/ait/articles/1211/06/news004.html --UDIDがはらむプライバシー問題~ http://www.atmarkit.co.jp/ait/articles/1212/18/news007.html --認証UX標準化を目指すAccount Chooser~ http://www.atmarkit.co.jp/ait/articles/1301/28/news010.html --ユーザー中心のアクセス管理を目指すプロトコル~ http://www.atmarkit.co.jp/ait/articles/1305/09/news003.html **[[OAuth]] 2.0, [[OpenID Connect]]のParameterとFlowの関係 [#t5eaa9fb] -汎用認証サイト(Multi-purpose Authentication Site) - Open 棟梁 Wiki~ 参考 > OAuth 2.0, OpenID ConnectのParameterとFlowの関係~ https://opentouryo.osscons.jp/index.php?%E6%B1%8E%E7%94%A8%E8%AA%8D%E8%A8%BC%E3%82%B5%E3%82%A4%E3%83%88%EF%BC%88Multi-purpose%20Authentication%20Site%EF%BC%89#d07fe545 **インフル [#k37abcf8] ***Identity | @_Nat Zone [#u94855a6] http://www.sakimura.org/category/identity/ -非技術者のためのOAuth認証(?)とOpenIDの違い入門~ @_Nat Zone - Identity, Privacy and Music~ http://www.sakimura.org/2011/05/1087/ -非技術者のためのデジタル・アイデンティティ入門~ http://www.sakimura.org/2011/06/1124/ ***TakahikoKawasaki - Qiita [#zaa85923] http://qiita.com/TakahikoKawasaki -OAuth & OpenID Connect 関連仕様まとめ - Qiita~ http://qiita.com/TakahikoKawasaki/items/185d34814eb9f7ac7ef3 -OAuth 2.0 + OpenID Connect のフルスクラッチ実装者が知見を語る - Qiita~ http://qiita.com/TakahikoKawasaki/items/f2a0d25a4f05790b3baa -【第二弾】OAuth 2.0 + OpenID Connect のフルスクラッチ実装者が知見を語る - Qiita~ http://qiita.com/TakahikoKawasaki/items/30fbd546935cea914e4f -OAuth & OpenID Connect の不適切実装まとめ - Qiita~ http://qiita.com/TakahikoKawasaki/items/efbbd2c5875577c911a3 -OAuth 1.0 のほうが OAuth 2.0 より安全なの? - Qiita~ http://qiita.com/TakahikoKawasaki/items/3600b28af7b63671b968 ***r-weblife [#m41576b0] -Authlete の OAuth 2.0 / OIDC 実装ナレッジ 完全に理解した - r-weblife~ https://ritou.hatenablog.com/entry/2018/10/02/013902 -文字で読みたい2分間OAuth講座 > +(1) The Basic Concepts (2) Bearer and Sender Constrained Tokens~ https://ritou.hatenablog.com/entry/2018/09/19/102525 +(3) Where are Sender Constrained Tokens used?, (4) Why Refresh Token?~ https://ritou.hatenablog.com/entry/2018/09/20/111009 +(5) Secret of Authorization Code, (6) Actors of OAuth~ https://ritou.hatenablog.com/entry/2018/09/25/033847 +(7) When can one use password grant?, (8) ROPC (Password Grant) the Migration Tool~ https://ritou.hatenablog.com/entry/2018/09/26/113512 ***Nov Matake [#a2a8e56d] -ID連携概要 - OpenID TechNight vol.13~ http://www.slideshare.net/matake/id-openid-technight-vol13 -ID連携入門 (実習編) - Security Camp 2016~ http://www.slideshare.net/matake/id-security-camp-2016 ---- Tags: [[:認証基盤]], [[:クレームベース認証]]