「[[マイクロソフト系技術情報 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の発行)
認証・認可のサーバー機能([[Cookie認証チケット>認証基盤#la8f4c73]]と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)への対応が可能。~
-[[NIST SP 800-63-1で定義されている全ユーザ認証要件(LoA)>LoA(Level of Assurance)]]への対応が可能。~
金融システムや電子政府/行政システムにも利用できることを意味している。

**[[Financial API (FAPI)]] [#i97dedf3]
金融機関API向けJSON data schema, REST APIの、~
セキュリティ+プライバシー・プロファイルの勧告(チェックリスト)を提供

***[[FAPI Part 1 (Read Only API Security Profile)]] [#mfa9b793]
読み取り専用

***[[FAPI Part 2 (Read and Write API Security Profile)]] [#x9a4a259]
読み書き可能

**その他 [#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]
**選定 [#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]] [#n87e85c5]

-OpenID 2.0 (OAuthとの比較)~
OpenID 2.0とOAuth 1.0の仕様は、同時期に策定された。

-メリット
--一度の実装で複数のOPに対応できる。
--新たなOPが増えた場合もコストをかけずに対応が可能
--ユーザー認証を実装でき、その上サービス独自のAPIを利用できる。

-デメリット
--OAuth 1.0のように、サービス上のAPIに権限を付与する機能はない。

**[[OAuth]] [#j2acee06]
***[[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 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)への対応が可能。
--[[NIST SP 800-63-1で定義されている全ユーザ認証要件(LoA)>LoA(Level of Assurance)]]への対応が可能。
--金融システムや電子政府/行政システムにも利用できることを意味している。

**[[Financial API (FAPI)]] [#e531e56b]
***[[Financial API (FAPI)]] [#e531e56b]
金融機関APIのJSON data schema, REST APIで利用。

*[[課題解決>OAuth / OpenID Connectによる課題解決]] [#a1e9e46c]
**[[課題解決>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

**OpenID ファウンデーション・ジャパン [#g93d79c6]
http://www.openid.or.jp/

-公開資料~
http://www.openid.or.jp/document/

**インフル諸兄 [#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 の説明~
https://qiita.com/TakahikoKawasaki/items/e37caf50776e00e733be
--OpenID Connect の説明~
https://qiita.com/TakahikoKawasaki/items/498ca08bbfcc341691fe

-OAuth 2.0 + OpenID Connect のフルスクラッチ実装者が知見を語る - Qiita~
-全フローの図解
--OAuth 2.0 全フローの図解と動画~
https://qiita.com/TakahikoKawasaki/items/200951e5b5929f840a1f
--OpenID Connect 全フロー解説~
https://qiita.com/TakahikoKawasaki/items/4ee9b55db9f7ef352b47

-認証基盤実装者向け
--OAuth 2.0 + OpenID Connect のフルスクラッチ実装者が知見を語る~
---【第一弾】~
http://qiita.com/TakahikoKawasaki/items/f2a0d25a4f05790b3baa

-【第二弾】OAuth 2.0 + OpenID Connect のフルスクラッチ実装者が知見を語る - Qiita~
---【第二弾】~
http://qiita.com/TakahikoKawasaki/items/30fbd546935cea914e4f

-OAuth & OpenID Connect の不適切実装まとめ - Qiita~
--IDトークンが分かれば OpenID Connect が分かる~
https://qiita.com/TakahikoKawasaki/items/8f0e422c7edd2d220e06

--OAuth & OpenID Connect 関連仕様まとめ~
http://qiita.com/TakahikoKawasaki/items/185d34814eb9f7ac7ef3

--OAuth & OpenID Connect の不適切実装まとめ~
http://qiita.com/TakahikoKawasaki/items/efbbd2c5875577c911a3

--OAuth 2.0 の勉強のために認可サーバーを自作する~
https://qiita.com/TakahikoKawasaki/items/e508a14ed960347cff11

-OAuth 2.0 / OIDC 実装の新アーキテクチャー~
https://qiita.com/TakahikoKawasaki/items/b2a4fc39e0c1a1949aab

-『いまどきの OAuth / OpenID Connect (OIDC) 一挙おさらい』の予習・復習用情報~
https://qiita.com/TakahikoKawasaki/items/90ef63fc4f267b33d46d

***tkudo [#c8487ec7]
-SlideShare
--アイデンティティ (ID) 技術の最新動向とこれから~
https://www.slideshare.net/tkudo/eiam-ciam-technology-trend-2018
--APIエコノミー時代の認証・認可~
https://www.slideshare.net/tkudo/api-economy-authn-authz

***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

***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

**[[Sign In with Apple>https://dotnetdevelopmentinfrastructure.osscons.jp/index.php?Sign%20in%20with%20Apple]] [#lc16b8a9]

**Authlete ナレッジベース (Beta) [#e69f3b86]
-OAuth および OpenID Connect~
https://kb.authlete.com/ja/s/oauth-and-openid-connect

----
Tags: [[:IT国際標準]], [[:認証基盤]], [[:クレームベース認証]]


トップ   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS