Open ID Connect で シングルサインオン (SSO)を佩う

峻さん、こんにちは。室宝蝕�kグル�`プの稼-看噛温敬温稼です。
易暇が芦いです。易暇と冱えば腰ですね。峻さんは採の腰がお挫きですか�針修呂�でんが挫きです。

云籾です。
念指、或粥顎岳鞄2.0による�慙泙領��jを�B初しました。OAuth2.0はリソ�`スの侭嗤宀が、クライアントに��して、侭嗤するリソ�`スへのアクセス�慙泙鯲��jするための�J辛の碧�Mみです。このOAuth2.0をベ�`スに�J�^を佩えるようにしたのがOpen ID Connect (OIDC)という�ク颪任后�書晩はOIDCについてのお��です。

Open ID Connect (OIDC)

範�^と範辛

念指、範�^とは仝アクセスしてきた旋喘宀が云繁かどうかを鳩範すること々であり、範辛とは仝アプリなども根む旋喘宀にアクセス�慙泙鰉襪┐襪海函垢任后�また、或粥顎岳鞄2.0は仝範辛々に乎輝する、とお三ししました。

書指お三しする或鴛禽遺は仝範�^々に乎輝します。

シングルサインオンとは��

或鴛禽遺はシングルサインオンを�g�屬垢觜羝颪箸靴得�喘されています。シングルサインオンとは、恷兜に範�^を佩いログイン竃栖れば、その麿のシステムに��してもログイン竃栖るようにする碧怏みです。

システム蝕�kではいくつものシステムを旋喘しながら蝕�kを序めます。また、システム蝕�kでなくても、氏芙がその匍暦を膜佩するために鹸方のシステムを擬秘するケ�`スもあります。皆皆或を旋喘しない魁栽、それらシステムごとにアカウント鞠�hを佩い、システムごとに範�^を佩います。皆皆或を旋喘した魁栽、匯業、範�^サ�`バ�`で範�^を佩えば、參週はシステムごとの範�^は音勣になります。

皆皆或のメリットはアカウントの砿尖が1つで�gむことにあります。旋喘宀から需れば範�^を1指で�gませられるので旋宴來が貧がりますし、鹸方のパスワ�`ドを砿尖する返寂もなくなります。また、アプリサ�`バ�`はパスワ�`ドという蜘停秤烏を隔つ駅勣がなくなるため、セキュリティへのコストダウンにもなります。

採絞、或粥顎岳鞄2.0は範�^に聞えないのか��

或粥顎岳鞄2.0では、範辛サ�`バ�`からリソ�`ス侭嗤宀へ、クライアントに�慙泙鯲��jしても措いか鳩範します。その縞、範辛サ�`バ�`はリソ�`ス侭嗤宀が云繁であるかを鳩範します。鳩範返粁は��?ですが、謹くはリソ�`ス侭嗤宀へ鴛禽とパスワ�`ドの秘薦を陥します。つまり、範辛サ�`バ�`はリソ�`ス侭嗤宀へ鳩範する狛殻で、範�^も佩っていることになるため、範辛サ�`バ�`が�k佩するアクセスト�`クンを仝範�^した�^苧々と盾��することも竃栖ます。しかし、これは寂離った盾��です。

アクセスト�`クンは仝範�^した�^苧々にはなりません。その麼な尖喇は參和の宥りです。

  • クライアントはアクセスト�`クンの嶄附を需ることが竃栖ないため、豊がログインしたのかを登僅することが竃栖ない
    或粥顎岳鞄2.0では、アクセスト�`クンの嶄附に�vする碧��は蒙に苧芝されていません。アクセスト�`クンの嶄附を委燐しているのは範辛サ�`バ�`とリソ�`スサ�`バ�`です。クライアントはアクセスト�`クンを�k佩してもらい聞うだけであり、その嶄附を委燐するようなことは�覿┐靴討い泙擦鵝�
  • アクセスト�`クンはリフレッシュト�`クンなどで、リソ�`ス侭嗤宀がアクセスしていないにも�vわらず、クライアント軟咀で壅�k佩してもらう碧怏みが贋壓する
    リソ�`ス侭嗤宀が永遺を液じた朔も、クライアントはリフレッシュト�`クンによる、アクセスト�`クンの壅�k佩を佩うことが竃栖ます。その彜蓑で、アクセスト�`クンを功��にリソ�`ス侭嗤宀が仝ログインしている彜蓑々というのは佃しいものがあります。
  • そもそも或粥顎岳鞄2.0の範辛原嚥圭塀では、リソ�`ス侭嗤宀を宥さずにアクセスト�`クンを�k佩する返粁がある
    念指の誘後では函り貧げませんでしたが、アクセスト�`クンを�k佩するフロ�`には、クライアント?クレデンシャルによる原嚥圭塀があります。これはリソ�`ス侭嗤宀が贋壓しないケ�`スで旋喘される範辛原嚥圭塀で、クライアント徭悶がリソ�`ス侭嗤宀ように尅る玲う圭塀です。

鴛禽ト�`クン

OAuth2.0ではアクセスト�`クンを仝�J�^した�^苧々として�Qうことを�覿┐靴討い泙擦鵝�なので、OIDCでは仝�J�^した�^苧々として鴛禽ト�`クンを�k佩します。參和は鴛禽ト�`クンが�k佩されるまでの���gなプロセスになります。

OIDCは�J�^シ�`ケンスなので、リソ�`スサ�`バ�`はいません。OAuth2.0で柵ばれていたクライアントは、OIDCでは仝リライング?パ�`ティ(RP)々と柵びます。また、�J�^を佩い鴛禽ト�`クンを�k佩するサ�`バ�`を仝アイデンティティ?プロパイダ(IdP)々と柵びます。

ユ�`ザ�`とIdPとの�gで�J�^が撹孔すると、IdPはRPへ鴛禽ト�`クンを�k佩します。鴛禽ト�`クンのフォ�`マットはJWT+JWSと協められており、鴛禽ト�`クンには�J�^に撹孔したユ�`ザ�`の秤�鵑�根まれています。そのため、RPは鴛禽ト�`クンから�lがログインしてきたのかを�_�Jすることが竃栖るようになります。

なお、貧の�蹐任榔�禽ト�`クンのみを�k佩していますが、謹くの��栽、IdPはOAuth2.0の�J辛サ�`バ�`と揖��にアクセスト�`クンも�k佩します。RPは鴛禽ト�`クン、アクセスト�`クンを鞭け函ることになります。

範辛コ�`ドによる範�^圭塀

OIDCも謹��なユ�`スケ�`スを�覿┐靴董△い�つかの�J�^圭塀を喘吭しています。しかし、OAuth2.0をベ�`スにしているため、そのシ�`ケンスはOAuth2.0とほぼ揖じです。參和は麼に聞われる仝範辛コ�`ドによる範�^圭塀々のシ�`ケンスです。

OAuth2.0の仝�J辛コ�`ドによる原嚥圭塀々と揖じですが、�`うところはト�`クンエンドポイントから鴛禽ト�`クンとアクセスト�`クンを函誼するところになります。函誼したアクセスト�`クンにより、UserInfoエンドポイントからユ�`ザ�`秤�鵑鯣ゝ辰垢襪海箸�竃栖ますが、これは駅��ではありません。枠に峰べた宥り、鴛禽ト�`クンからある殻業のユ�`ザ�`秤�鵑魑辰襪海箸�竃栖ます。

おわりに

或鴛禽遺も或粥顎岳鞄2.0に減けず、謹��な範�^シ�`ケンスが協吶されています。ただ、旋喘する鴛糸永がそれら謹��な範�^シ�`ケンスの畠てに��鬉靴討い誑Uではありませんので、範�^桟廠を更廏する縞は鴛糸永のマニュアルを�iむことをお�瓩瓩靴泙后�

ではまた。


Recommendおすすめブログ