認証と認可について、よく話題に出てくるがあまり違いがわからないのでまとめてみた。
認証と認可の定義
認証:その人の身分であることを証明する
認可:特定のリソースに対してアクセス権を与えることを指す
認証・認可での具体例
リバプロ認証などもあるが、ここでは特にSSOを実現するための機能について記載する。下記のサイトを参考に記載
OAuth、OpenID Connect、SAMLとその違いについて大雑把にまとめると #OAuth2.0 - Qiita
*OAuthに関しては、こちらのサイトを参照
OAuthとは?具体的な利用例と仕組みを徹底解説! | LISKUL
OAuthとは?概要からメリット・デメリット、具体的な仕組みやOpenIDとの違いまで徹底解説 :: GMOトラスト・ログイン ブログ | シングルサインオン(SSO)や認証に関する話題
↑下の方が具体例がついてて理解は早かった
*OIDCはこちらを参照
・SAML認証(Security Assertion Markup Languageの略)
登場人物
SP:Service Provider(大学のポータルサイト・会社のポータルサイト)
Idp:Identity Privider(Azure AD など)
やること
・SPにログインしようとしたときに、IdPにログイン要求がいく
・Idpから認証画面がユーザー表示
・自動でidpに対して、ログイン行為のようなものが実施
・SPへの認証が完了する
・OAuth(オープン認証:Open Authorization)
・認可に重きを置いている。Twitterに連携した内容をFaceBookにも連携させようと言うイメージ。
・外部のアプリがGoogleDriveに対して操作を実施できるイメージ。
・OAuth:認可に重きを置いたプロトコル(?)
・OIDC:認証に重きを置いたプロトコル(?)
(言い方が適切かはわからない)
・httpsの接続が必須みたい
*英語訳でauthorizationなのに、認証と言う日本語と呼ぶのかよくわからにない
登場人物
ユーザー(リソースオーナー):利用者
クライアント:ユーザーデータへのアクセスを必要とするアプリやサービス→Twitter
認可サーバー:FaceBook
リソースサーバー:外部サービスが実質的に担っている→FaceBook
やること
・ユーザーがTwitterに対して、FBとの連携を要求
・TwitterがFBに要求すると、FBがユーザーに認可コードを発行
・ユーザーは認可コードをFBに送り、アクセストークンを要求
・有効だったらFB→Twitterにアクセストークン発行
・TwitterはFBのリソースにアクセスし操作実行が可能
・OIDC(Open ID Connect)
よくあるgoogleでログインみたいなやつ。
登場人物
クライアント:外部サービス
ユーザー
IDプロバイダー:Googleとか
やること
・クライアントアプリがIDプロバイダーにIDトークンの発行を要求
・ユーザーに確認がくるので、許可する
・認証が完了して、クライアントにIDトークンが発行される
(・Kerberos認証)→時間あったら追記