1. まとめトップ

OauthとOpenIDとSAML

認証と認可と属性情報

更新日: 2020年03月27日

1 お気に入り 8223 view
お気に入り追加

この記事は私がまとめました

twcritiqueさん

認証と認可

認証(Authentication)
そのユーザーが自分の物であると主張するIDに対して、そのIDが確かにそのユーザーの物であるということを保証すること
認可(Authorize)
認証されたIDを受け入れ、サービスに対して適切な権限を与えること

2016年現在の最新の標準は、2012年にRFCとして発行されたOAuth 2.0である(RFC6749、RFC6750)

とにかくOauth2で

OAuth 2.0 の implicit flow を使って「認証」をしようとすると、とっても大きな穴が開きます。

カット&ペーストアタックが可能だからです。

OAuth 認証?は、図1のような流れになります。

これは何も「Facebook IDでログイン」に限った話ではありません。しかし、OAuth 2.0ベースのID連携を行う場合、利用されるOAuth ServerはほぼFacebook APIになるので、ここではFacebookの名前を直接挙げています。

 OAuth 2.0とProfile APIの組み合わせによってID連携を実現する際、スマホのネイティブアプリなどのPublic Clientは、Implicit Grantフローを利用することになります

SAMLとは

SAMLの標準では、認証、属性、権限の認可をXMLでアサーション(assertion, 直訳:表明)する方法と、これらの情報を伝送するためのプロトコルとに関する文法と意味論を定義している

Security Assertion Markup Language(セキュリティ アサーション マークアップ ランゲージ、略称SAML)は、インターネット上でIDやパスワードなどを交換するためのXML仕様。OASISで策定された。

OpenID Authentication 2.0 は、あるユーザが認証された旨の情報、認証をどのように行ったかの情報、当該ユーザの属性情報を、要求元であるWebサイトに対して、提供元となるアイデンティティ・プロバイダが転送するプロトコルである。

mixi、livedoor、BIGLOBE、exciteなど多くの認証サーバに対して、公開ライブラリのデフォルトのままでは接続がうまくできない。これはアプリケーションサイトと認証サーバ間のSSL通信が樹立できないことによる。対策としてはサイトのサーバに、それぞれの認証サーバが発行している証明書をインストールしておくなどがある。
Movable Type、WordPress、XOOPSなど多くのコンテンツマネージメントシステムにおいて、追加プラグインの導入などで、サイトのログイン認証にOpenIDを利用できる。

OpenID Connectの最もシンプルな実装として、OAuth 2.0に「ユーザー認証結果と統一的なプロフィール情報の受け渡し」の機能のみを追加した仕様があります。OAuth 2.0のアクセス権限付与フロータイプごとにリクエスト/レスポンスの拡張方法を定義しています。

OpenID Connect
2009年にOAuth 2.0の標準化がIETFで始まったことを受けて 策定が始まった、次世代の認証・連合アイデンティティシステムの標準。
HTTP上で使う場合には OAuth 2.0 をベースにしながら、 HTTP以外のプロトコル (XMPP他) にも拡張可能になっており、 スマートフォン上でのアプリの台頭を意識した作りになっている。

2006年11月、ブレイン・クックはTwitterでのOpenID実装を行っていた。同じ頃、ソーシャルブックマークサイトの Ma.gnolia は、会員がOpenIDを使ってDashboardウィジェットからサービスにアクセスすることを認可する方法を必要としていた。そこでクックとクリス・メッシーナ、Ma.gnolia のラリー・ハーフはデビッド・リコードン(当時ベリサイン)と会い、OpenIDを使ってTwitterやMa.gnoliaのAPIの認証委譲する方法を議論した。

1