オッス!オラ認証周りをまとめてみた
こんにちは。今日は趣向を変えて千代田区立図書館に来てみました。
図書館は普段あんまり行かないので、地元の図書館との違いに驚きでした。 都内の図書館って広いし綺麗ですね。 九段下から割と近い、置いている蔵書のジャンルが多し、席のジャンル多し、無線Wifiあり、電源あり、でかなり使いやすかったです。 静かで落ち着いた雰囲気で過ごしやすい気がしますが、無音なので独り言が多い人は気をつけてください。
さて、前回の記事について@okeee0315さんからこんなコメントを。
認証回りは大事、ADの前に認証と認可が必要かも / ADなにそれおいしくない(泣) - どんまいこのネタ帳 https://t.co/MEFI6o5qNA
— okeee (@okeee0315) 2016年5月3日
ほほう。ADはまだ美味しくなかったので、教えに従い認証周りをもう少し調べてみることに。
認証と認可
指摘のあった認証と認可の違いから
- 認証
- Authentication
- 本人確認
- 本人を識別するIDとパスワードの対が一致することで本人とみなす処理
- 認可(権限付与)
- Authorization
- 認証済みのユーザーに対しサービスの利用やリソースへの権限を与える処理
違いはこの図の感じ
この違いを知らなかったというより、まったく意識してませんでした。 ただ、この後の内容をやっていくうちに大きなポイントだったと知ることになります。
認証に関わるフェデレーションの技術とか
調べていく中で出てきた認証方式をつらつらと
1.認証API
2.OpenID
- 認証APIの懸念点を払拭した認証プロトコル
- 分散認証型システムで複数の認証サービスを利用することができる
- OpenIDの主な用語
- OpenIDの認証の流れ
- ユーザはRPにアクセスし、自身のClaimed Identifierを入力する
- RPは入力されたClaimed Identifierを元にOPを探す
- RPはOPとの間で共通鍵を交換する
- RPはユーザをOPへリダイレクトさせ、ユーザの認証を要求する
- ユーザはOPにログインする。OPはClaimed IdentifierをRPに通知していいか確認する
- ユーザが同意するとOPは利用者をRPへリダイレクトさせ、認証結果をRPに通知する
- RPは受け取った認証結果に含まれるClaimed Identifierでユーザを認証する
3.OAuth
- OpenIDの課題を解決するためにTwitter社のブレイン・クック氏をはじめとした開発者が集まりAPI認可プロトコルとして開発した
- OpenIDはIDの持ち主が本人か確認(認証)してくれるが、認証されたIDがどのリソースにアクセスできるか(認可)はやってくれない
- 認可(アクセス権限付与)のためのプロトコル。認証はないよ
- OAuthプロトコルの特徴
- API接続確認にトークンを使うこと
- トークンはユーザーの同意に基づいてサービスプロバイダからサービスを提供するサイトに付与される
- OAuthの用語
- OAuth 1.0と2.0の違い
- OAuth 1.0の課題
- 認証と署名の仕組みが複雑
- Webアプリのみを対象としデスクトップ/モバイルアプリの対応が微妙
- OAuth Clientがリクエストトークンの保管によりスケール時のパフォーマンス低下
- OAuth 2.0の特徴
- HTTPSを必須にし署名なしでトークン取得が可能
- Webアプリ含め4つのクライアントプロファイルを仕様化
- アクセストークンのみでリソースにアクセス可能
- OAuth 1.0の課題
4.OpenID Connect
- OAuth 2.0の拡張版
- 認証も認可もやる。いいとこ取り
- ユーザーの属性情報(ユーザー識別子、氏名、性別、生年、住所、メールアドレス等)を取得する機能も含む
- こちらのスライドがかなりわかりやすい
www.slideshare.net
5.SAML
- Security Assertion Markup Language
- OpenID Connectに近い認証プロトコル
- 認証情報の伝達(Authentication Assertion)、属性情報の伝達(Authorization Assertion)、アクセス制御情報の伝達(Authorization Decision Assertion)の機能をもつ
- SAMLの用語
- IdP(Identity Provider):認証情報を提供する側
- SP(Service Provider):認証情報を利用する側
- OpenID Connectとほとんど同じようだが、大きい違いは信頼関係の構築
- SPが信頼するIdPの登録とIdPが信頼するSPの登録をそれぞれ行う
- OpenID ConnectではSP(RP)がIdP(OP)に登録するだけだったはず
- SAMLがエンプラ系で使われる理由かも
- OpenID/OAuth/SAMLの違いをまとめているスライドがわかりやすい
www.slideshare.net
AWSのフェデレーションサービス
- AD Connector:Active DirectoryのID/パスワードを使うなら
- Amazon Cognito:ソーシャル認証プロバイダーのID/パスワードを使うなら
※Cognitoはもっといろいろ機能あるけどフェデレーションに絞るなら
西谷さんのためになる資料
www.slideshare.net
まとめ
バラバラと聞いたことある単語がようやく紐付いた感じ ちょっとActive Directoryが美味しくなってきたかもしれない、たぶん
参考資料
- ZIGOROuのOpenID Short Clinic:認証と認可の違い - ITmedia エンタープライズ
- APIアクセス権を委譲するプロトコル、OAuthを知る − @IT
- 第1回 OpenIDサービスを利用して,OpenIDの仕組みを理解する:いますぐ使えるOpenID|gihyo.jp … 技術評論社
- 非技術者のためのOAuth認証(?)とOpenIDの違い入門 | @_Nat Zone
- 第6回 WebAPI,認証APIのセキュリティ:ここが危ない!Web2.0のセキュリティ|gihyo.jp … 技術評論社
- デジタル・アイデンティティ技術最新動向(1):「OAuth」の基本動作を知る (1/2) - @IT
- デジタル・アイデンティティ技術最新動向(2):RFCとなった「OAuth 2.0」――その要点は? (1/2) - @IT
- http://www.atmarkit.co.jp/fsmart/articles/OAuth2/01.html
- SAML認証ができるまで - Cybozu Inside Out | サイボウズエンジニアのブログ