Open shuhei-fujita opened 8 months ago
JWTを使用した認証フロー
sequenceDiagram
participant Browser as Webブラウザ
participant APIServer as APIサーバー
participant DBServer as DBサーバー
Note over Browser,APIServer: ユーザーがログインを試みる
Browser->>APIServer: ユーザー名とパスワードを送信
APIServer->>DBServer: ユーザー認証の確認
DBServer-->>APIServer: ユーザー情報の確認結果
APIServer->>APIServer: JWT生成
APIServer-->>Browser: JWTを返す
Note over Browser,APIServer: ユーザーがJWTを利用してリソースにアクセス
Browser->>APIServer: JWTと共にリソースへのアクセス要求
APIServer->>APIServer: JWTの検証
alt JWTが有効
APIServer->>DBServer: リソースへのアクセス要求
DBServer-->>APIServer: リソースデータ
APIServer-->>Browser: リソースデータを返す
else JWTが無効
APIServer-->>Browser: エラーメッセージを返す
end
OAuth2を使用した認可フロー
sequenceDiagram
participant Browser as Webブラウザ
participant APIServer as APIサーバー
participant AuthServer as 認証サーバー
participant ResourceServer as リソースサーバー
Note over Browser,AuthServer: ユーザーがサービスにログインを試みる
Browser->>APIServer: ログイン要求
APIServer->>Browser: OAuth2認証ページリダイレクトURLを返す
Browser->>AuthServer: リダイレクトされた認証要求
AuthServer->>Browser: 認証とアプリケーションへのアクセス許可要求
Browser->>AuthServer: ユーザー認証とアクセス許可
AuthServer-->>Browser: 認可コードを返す
Browser->>APIServer: 認可コードを送信
APIServer->>AuthServer: 認可コードとクライアント情報を使ってアクセストークンを要求
AuthServer-->>APIServer: アクセストークンとリフレッシュトークンを発行
Note over APIServer,ResourceServer: リソースアクセスのためにアクセストークンを使用
APIServer->>ResourceServer: アクセストークンを利用してリソースへのアクセス要求
ResourceServer->>ResourceServer: アクセストークンの検証
alt アクセストークンが有効
ResourceServer-->>APIServer: リソースデータを返す
else アクセストークンが無効
ResourceServer-->>APIServer: エラーメッセージを返す
end
APIServer-->>Browser: リソースデータまたはエラーメッセージを返す
認証(Authentication)
ユーザーが自分が主張する人物であることをシステムが確認するプロセスです。これは通常、ユーザー名とパスワード、二要素認証、生体認証などを使用して行われます。
認可(Authorization)
認証されたユーザーがアクセスしたり操作したりすることが許可されているシステムのリソースや機能を定義するプロセスです。認可では、ユーザーがどのリソースにアクセスできるか、どの操作を実行できるかが決定されます。
ex) APIとデータベース(DB)に関して
https://chat.openai.com/c/ffe54e82-3076-4ab7-acd9-6205833e08ff