:じゃぁそれをポチっとすると、あるサービスのAPIにリクエストが投げられますと。このリクエスト投げる時点では、中継APIを経由しないと。Rocky:なるほど。:で、次にそのあるサービスのAPIが、Rockyさん担当Webサイトにリダイレクトさせるとともに、URLにクエリでワンタイムパスワードを返します。:これは例えば、ここでIDトークンをクエリで渡してしまうと、丸見えになってしまって、とても危険ですよね。ここでは私だったらクエリにワンタイムパスワードを乗せて返すと思います。Connectの仕様ではなく、私なりのソリューションです。あとここで大事なのは、リダイレクトさせるURLをきっちり制限しておくことと、ワンタイムパスワードには有効期限を設定しておくことですね。:そうです!で、このクエリでワンタイムパスワードを返すタイミングで、あるサービスのAPIから中継APIにもあるものを渡させます。それは、2つあって、1つは先ほどのワンタイムパスワードと全く同じもの。一つはとJWT(ジョット)という形式のIDトークンになります。これを中継APIに渡します。Rocky:ふむふむ。:ここで、先ほどRockyさん担当Webサイトにもワンタイムパスワードを返してましたよね?これをそのブラウザから、中継APIに投げてるようにしてみましょうか。(IV)Rocky:ふむふむ、となると中継APIに、今2つのワンタイムパスワードがあるってことになりますね。:さすがRockyさん、その通りです!2つのワンタイムパスワードが同じものだと確認できた場合は、中継APIからWebサイトへIDトークンを、APIレスポンスとして返します。:こうすることでURLにはIDトークンには乗って来ないから安全ですよね。この時点で、もうワンタイムパスワードは破棄してしまいます。Connectの真骨頂です。ここからさらにもう一度このIDトークンを中継APIに、POSTします。:もしワンタイムパスワードだけで認証を済ませてしまうと、共有PCを使っていた場合、ブラウザの履歴に残ったURLなどから不正をされてしまう可能性がありますよね。:ここでというか、まぁタイミングのパターンは色々とあるんですが、あるサービスのAPIから中継APIに鍵を渡します。:署名を検証するための鍵になるんですが、そうですね、鍵の説明の前に、JWT形式のIDトークンというのものが、どういう構造になっているか見てみましょう。JWT形式のIDトークンというのは、下図のようにヘッダー、ボディー、署名という3部構成になっているんですよね。下の署名っていうのは、真ん中のボディー部分を鍵で暗号化することで生成されるんですね。この鍵を中継APIにも渡すってことです。この鍵で、Webサイトのブラウザから返ってきたIDトークンに対して検証をするんです。検証のやり方は、署名を生成する時と同じです。:もう少しセキュアにしようと思えば、あと二箇所くらいは改善点があるのですが、ちょっと今日は長くなったんで、続きはまた次回にしましょうかね。:こちらこそ有難うございました!最後にいかがだったでしょうか?OAuth2.0やOIDCの話に関してはいろいろな活用方法がありますが、自分なりにこうするという考えを踏まえて説明してみました。普段からこういう感じでカジュアルに技術に関することも、そうでないことも教えているので興味がある方はメンタープランの方をチェックしてみてください。最後にこれからも投稿していきますので是非フォローの方お願いいたします。初めまして現在フリーランスエンジニアのヒグです。今まで50名ほどのメンタリングをして、エンジニア転職の手伝いをしてきました。新卒の非ITの学科で倍率144倍の企業に入れた実績や学生時代に100名以上の学生の就職支援を行なったノウハウを可能な限り色んな方に共有して支援していきたいと思います。serveコマンド実行エラーが発生しましたので解決をお願いいたします。XLRDErroerです。初めまして現在フリーランスエンジニアのヒグです。今まで50名ほどのメンタリングをして、エンジニア転職の手伝いをしてきました。Connect】ログイン情報連携させる時ってどうするの?Markdown記法の書き方Markdownを使った書き方をご紹介します。約3,000名のメンターから選べるプログラミング、デザイン、マーケティング、起業など学びたいスキルでピンポイントに探せます。見つからない場合は、メンターを募集することも可能です。個別に教えてもらえるあなたが悩んでいることをダイレクトに相談して、マンツーマンで解決までたどり着くことができます。リーズナブルスクールなどの企業ではなく、個人のメンターと直契約するため比較的リーズナブルに教えてもらうことができます。