0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

BFFにおけるFIDO認証の認証登録と認証の流れ

Last updated at Posted at 2024-10-27

はじめに

FIDO認証の認証登録と認証の流れを整理する

前提

  • 登場人物はフロントエンド(アプリ・InAppブラウザ)、BFF、バックエンド、認証サーバ
  • 異常系は考えない
  • Attestation(※1)は使用しない

※1 認証情報の証明で、セキュリティと信頼性を向上させるため使用される

FIDO認証の登録の流れ

フロントエンド(アプリ) フロントエンド(InAppブラウザ) BFF バックエンド 認証サーバ
1.InAppブラウザでFIDO認証をサポートするウェブサイトにアクセス(デバイス登録の開始)
2.BFFにデバイス登録のリクエスト送信(フロントエンドからのPOST①)
3.バックエンドにリクエスト送信(BFFからのPOST②)
4.認証サーバにリクエスト送信(バックエンドからのPOST③)
5.認証サーバがチャレンジコード(※1)を作成
6.認証サーバからレスポンス(チャレンジコード)受信(POST③のレスポンス)
7.バックエンドからレスポンス(チャレンジコード)受信(POST②のレスポンス)
8.BFFからレスポンス(チャレンジコード)受信(POST①のレスポンス)
9.In-Appブラウザが受信したレスポンスを受取る
10.生体認証を実施
11.公開鍵と秘密鍵のペアを作成
12.秘密鍵を保存
13.チャレンジコードを署名(秘密鍵で署名)
14.InAppブラウザに公開鍵と署名を渡す
15.BFFに公開鍵と署名を送信(フロントエンドからのPOST④)
16.バックエンドに公開鍵と署名を送信(BFFからのPOST⑤)
17.認証サーバに公開鍵と署名を送信(バックエンドからのPOST⑥)
18.署名を検証(公開鍵で署名を検証)しチャレンジコードを取得
19.認証サーバからレスポンス(検証結果)受信(POST⑥のレスポンス)
20.バックエンドからレスポンス(検証結果)受信(POST⑤のレスポンス)
21.BFFからレスポンス(登録成否)受信(POST④のレスポンス)
22.処理を完了(デバイス登録の完了)

※1 認証プロセスの一部として利用されるサーバーがユーザに対して送るランダムな文字列、チャレンジと表現することが多い

FIDO認証の流れ

フロントエンド InAppブラウザ BFF バックエンド 認証サーバ
1.InAppブラウザでFIDO認証をサポートするウェブサイトにアクセス(認証の開始)
2.BFFに認証リクエストを送信(フロントエンドからのPOST①)
3.バックエンドにリクエスト送信(BFFからのPOST②)
4.認証サーバにリクエスト送信(バックエンドからのPOST③)
5.チャレンジコードを作成
6.認証サーバからレスポンス(チャレンジコード)受信(POST③のレスポンス)
7.バックエンドからレスポンス(チャレンジコード)受信(POST②のレスポンス)
8.BFFからレスポンス(チャレンジコード)受信(POST①のレスポンス)
9.In-Appブラウザが受信したレスポンスを受取る
10.生体認証を実施
11.チャレンジコードを署名(秘密鍵で署名)
12.InAppブラウザに署名を渡す
13.BFFに署名を送信(フロントエンドからのPOST④)
14.バックエンドに署名を送信(BFFからのPOST⑤)
15.認証サーバに署名を送信(バックエンドからのPOST⑥)
16.認証サーバが署名を検証(公開鍵で署名を検証)しチャレンジコードを取得
17.認証サーバからレスポンス(認証結果)受信(POST⑥のレスポンス)
18.バックエンドからレスポンス(認証結果)受信(POST⑤のレスポンス)
19.BFFからレスポンス(認証成否)受信(POST④のレスポンス)
20.認証を完了(認証の完了)

認証登録と認証の違い

  • 認証登録のみ、秘密鍵と公開鍵を生成
  • 認証登録のみ、公開鍵を認証サーバに送信

まとめ

(実際に実装するのは難しいだろうが、)
整理すると公開鍵暗号方式にフロントエンドの認証(例では生体認証)が組み込まれているだけでそこまで複雑ではない

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?