システムで OAuth 2.0 を使用する予定ですが、セキュリティ レベルに満足していません。OAuth 2 は業界の標準になったので、何か見落としがあるのではないかと思います :-)
システム API を保護する必要があります。API には、ユーザー情報へのアクセスを公開するものと公開しないものがあります。ユーザーはログインせずにシステムを使用することができ、後で身元確認が必要な操作を行う場合、資格情報を提供する必要があります。
そのため、最初にクライアント資格証明認可付与を使用してクライアントを識別します。秘密鍵を使用する方がより安全に見えるため、このモードをお勧めします。クライアントは、ユーザー エージェントにロードされる Java スクリプト アプリケーションです。フローは次のとおりです。
- ユーザーエージェントは、アプリケーションのバックエンドにアプリケーションをロードするように要求します
- クライアントのバックエンドは認可サーバーを呼び出してクライアントを認可します。client_id と secret_key を提供します。成功するとアクセストークンが発行されます。
- クライアントにロードされるアプリケーションには、アクセス トークンが含まれます。
- クライアントはトークンを使用してシステム API にアクセスします。
Q: アプリケーションの URL は誰でも使用できます。アプリケーションをロードすると、アクセス トークンが手に入ります。client-id やシークレットを提供する必要はありません...それはただそこにあります。では、セキュリティはどこにありますか?
ユーザーを特定する必要がある場合は、暗黙の承認付与を使用することを考えました。その場合、秘密鍵はクライアントの秘密ではないため、使用しません。ただし、client_id を知っていて、ユーザーを登録していれば、誰でもアクセス トークンを取得できます。
Q: 再びセキュリティに関する質問です。システムにアクセスしたクライアントが実際のクライアントであることをどのように確認できますか?
ありがとう、
アビラム