Java、.NET などのさまざまなテクノロジを使用する多数のクライアント アプリケーションで使用される Web API Web サービスがあります。したがって、ユーザー資格情報は別のデータベースに保存されます。
私の Web サービスはIIS内でホストされており、サーバー側でSSLを構成して有効にしました。これにより、要求/応答メッセージが暗号化され、署名されていることが保証されます。
また、少数の既知の IP アドレスからの要求を許可するように、IIS の IP アドレス制限機能を構成しました。
メッセージはSSLを使用して暗号化されていますが、すべてのメッセージで資格情報をプレーンテキストで送信するため、基本認証を使用したくありません。
ユーザーがサーバーと同じドメインにないため、明らかに統合 Windows 認証を使用できません。
クライアントがブラウザーベースではないため、フォーム認証を使用できません。
では、Web サービスに認証と承認を実装する最良の方法は何でしょうか?
1 つのアプローチは、 Identity Provider/Security-token-service のように動作し、一定時間後に有効期限が切れるそのユーザー固有のトークンを生成するAuthenticate(username, password) Web メソッドを提供することだと考えていました。次に、クライアントは各 Web メソッド要求で認証トークンを送信する必要があり、コントローラー用のカスタム承認フィルターを作成して確認します。
このアプローチの利点は、ユーザーが各リクエストでユーザー名/パスワードを送信する必要がなく、一時的なトークンのみを送信する必要があることです。欠点は明らかにトークンの寿命を管理することです。いつ期限切れになりますか?たとえば、1 時間以内にリクエストが行われなかった場合。
Web サービスの認証と承認を実装する最良の方法は何ですか?