-1

私はAzure Active Directoryを使用してASP.NET Core APIとSPAアプリケーションを保護しています。現在のところ、クライアントのシークレットは使用していません。これは、公開JavaScriptで表示されるため、SPAアプリケーションにとっては問題ありません。SPAアプリケーションのAzure Active Directoryクライアントの秘密

私のAPIの1つにクライアントシークレットを追加する場合、Azure Active Directoryに、自分のSPAにクライアントシークレットを使用しないように指示するにはどうすればよいですか?私はAPIコールをAPIにしていますか?

+0

SPAから現時点でAPIを保護するためにユーザー資格情報を使用していますか? –

+0

@CuongLeはい、Azure ADはログインページにリダイレクトし、ユーザーはログイン情報を入力してSPAアプリケーションにリダイレクトします。 –

+0

クライアントシークレットを使用するのではなく、直接トークンを取得するのにusername/passwordを直接使用しないのはなぜですか? –

答えて

1

この場合、APIはAzure ADの別のアプリケーションである必要があります。同じアプリケーションの場合、クライアントの秘密はどこからでも動作します。

実際にはSPAであるため、秘密を使用できる唯一の方法はAJAX経由であり、Azure ADはCORSをサポートせずブロックします。

将来的には機能していたとしても、クライアント側のコードにクライアントを秘密にするべきではありません。これには、WebアプリケーションのフロントサイドJavaScriptとモバイルアプリケーションのコードが含まれます。 (これはあなたには分かりましたが、回答を読んでいる誰かがこれを理解していることを確認してください)誰かが比較的簡単にそこから秘密をつかんで、アプリがいくつかのAPIにアクセス権を持っていれば、行っている。

+0

SPAで秘密を使用しないという点は、それらがブラウザで終わり、SPAをロードするすべての人(攻撃者を含む)に見えることです。それはAJAXから独立しているか、それがどのように使用されているかです。 –

+0

はい、明らかです。それはOPにとっても明らかでした。私は、あなたがしたいと思っても、あなたが実際にそれをすることができなかったと簡単に述べていました。私はとにかくそれを答えに追加します:) – juunas

関連する問題