認証・認可はわかりづらい
最近認証・認可について調べることがあり、名前とどんなものかはざっくりと知っている状態でした。
ただ、誰かに説明して、と言われると自信がないのでまとめてみようと思いました。
今回は認証・認可のプロトコルについてです。
この内容について説明されているサイトや記事をいろいろ見たのですが、説明文がながーくて、読んでるだけで眠くなりそうでした・・・笑
ということで簡単に説明したほうがいいなと感じたので、箇条書きで特徴を書いてみました。
説明不足と感じるかもしれないけど、とっかかりとしてはいいのではと思います。
共通点
- どれも認証・認可のためのプロトコル
OAuth
OAuth2との混同防止のため、OAuth1と書いているところもある。
- MAC-SHA1署名方式
- HTTPSは推奨
- 古い形式でOAuth2よりも複雑と言われている
OAuth2
OAuthの進化系
- トークンベース方式
- HTTPS必須
- 下記の認証フローがある
- Authorization Code Flow (認可コード付与)
- Implicit Flow (暗黙的な付与)
- Client Credentials Flow (クライアントシークレット)
OpenID Connect (OIDC)
OAuth2の拡張版
- アクセストークンに加えて、IDトークンというトークンの中身に住所、名前などの属性情報が追加できる
- OAuth2よりも高度なセキュリティを提供する
- OAuth2と同様の認証フローを選択できる
- SSOがつかえる*
*こちら厳密にいうと、SSOが使えない場合もあります。
OpenID Connectの標準仕様に沿っているサービスであれば使用することができる。
さいごに
大雑把にまとめるとOpenID Connectが一番新しくてセキュアなプロトコルで拡張性もあるということです!
認証・認可はトークンのやりとりや暗号化などフローが複雑だったり、専門用語が乱立しているのでわかりづらいのだと思います。
この辺なんとかわかりやすく解説できないかなって考えたんですが、噛み砕いて説明している記事とかも結構あってみてみても私自身わかりづらかったです。
そして自分の中の結論はわかりづらいのは「慣れていないから」
慣れていないからどんな解説をみても理解が難しいのだと思います。
なので、プログラミング同様実際に手を動かして覚えるしかないのだと思いました。
認証・認可系のサービスはいろいろあるので、以下に代表的なサービスをあげておきます。
- Amazon Cognito
- Google Identity Platform
- Auth0
- KeyCloak
上記いずれも無償で使える枠があったと思うので、試してみてください。