👌

精神と時の部屋日記9 | Authentication

2023/03/19に公開

認証authenticationについて学んでいきます!

認証Authentication

認証と認可

概要

認証と認可は密接な関係にある全く異なる概念同士です。認証はAuthenticationといい、通信の相手が誰であるかを確認すること。認可はAuthorizationといい、とある条件に対してリソースアクセスの権限を与えることを表します。とある条件の部分が、相手が特定の誰かであることが認証されている、という条件であることが多く、認証と認可は表裏一体になっています。

認証と認可の分離

本来人間が持つ権限を外部システムに委譲する仕組みがOAuthです。
TwitterとTogetterというサービスについて考えてみると、TogetterというサービスはTwitterユーザ(@test_user)になり代わって@test_userの名の下にTwitterに対してTweetというリソースの操作をする。Twitterから見ると通信相手はTogetterであるのに対し、持っている権限は@test_userのものです。認証と認可に食い違いがある状態です。@test_userが認可の部分をTogetterに譲っているからです。

認証Authentication

認証とは通信の相手が誰であるかを確認すること
例えば保険証の提示と一緒です。病院で保険証を出して、田中さんと書いていた場合、病院はあなたを田中さんだと認めます。ただ、それだけです。認めただけで何かが許可されるみたいな話ではありません。

認証の3要素

1にinherence factorと呼ばれる生体認証があります。声とか指紋とかですね。
2にpossession factorと呼ばれる保有認証があります。身分証とか電話番号とかあなたが持っている身分証のようなものです。
3にknowledge factorと呼ばれるその人だけが知っていることを使って認証するものがあります。パスワードとか秘密の質問とかですね。

認可Authorization

とある特定の条件に対して、リソースアクセスの権限を与えること
鍵の発行のようなものにあたります。
切符を買ったので電車に乗れます。あなたが誰かは関係ありません。のような感じ。認可を持っていることでリソースアクセス(何か)が許されます。あなたが誰かは関係ありません。

認証に基づく認可

運転免許証のように写真によって誰かを特定した上で、車の運転を許可、認可している。

認可に基づく認証

この人は田中ハウスの鍵を持っているから田中さんである。帰納法みたいですね。認証してもらうために相手に自分の家の鍵を渡す感じです。この仕組みがOAuth認証です。

Discussion