私たちは顧客に電子メールを送信するために第三者の電子メールサービスプロバイダ(ESP)を利用しています。電子メールの1つにファイルが添付されている必要があります。これを達成するには、ESPにファイルのURLを与える必要があります。 ESPはファイルをダウンロードして電子メールに添付します。単一のリソースへのアクセスを制限するOauth2トークン
不正なダウンロードのリスクを制限するため、URLを保護するソリューションに取り組んでいます。 ESPはURLへのリクエスト中に自分自身を認証することはできませんので、URLを推測することを難しくし、限られた時間有効にするだけです。
これを達成する方法は、URLのクエリ文字列にトークンを入れることです。ファイルをホストするサービスは、トークンを検証し、アクセスを許可します。トークンは期限切れになる必要があり、特定のファイルにのみアクセスできるようにする必要があります。
すでに、oAuth2セキュリティトークンサービスを実行しているIdentityServer 3実装があります。私たちの計画は、このサービスがファイルダウンロードURLのクエリ文字列に入れられるトークンを生成させることです。特定のリソースへのアクセスのみを許可するトークンをサポートするカスタムoAuth2許可タイプの作成を検討しています。
これは、カスタム助成金とのOAuth2トークンエンドポイントへのリクエストの例のようになります。
POST /token HTTP/1.1
Host: server.example.com
Authorization: Basic czZCaGRSa3F0MzpnWDFmQmF0M2JW
Content-Type: application/x-www-form-urlencoded
grant_type=custom_grant&scope=attachment.read&resource_id=xxxxx
STSはトークンがへのアクセスを与えるリソースIDの主張にトークンを返します。
カスタム・グラント・タイプに適したユースケースですか、あるいはこれを実装する別の方法を検討する必要がありますか?
は、クライアントの資格情報は、(あなたが説明するようにスコープで)このために使用することが付与することはできませんが、請求は内の送信のためにESPに渡され、 URL?すなわち、クライアントはSTSにトークンを要求する(アクセストークンを取得するために秘密の資格情報を使用してSTSに対して認証することができる)。これを添付ファイルパスとして渡すことができる。 – SilverlightFox
私たちはそれについて考えましたが、問題は、このアクセストークンが特定のスコープではなく、そのスコープのすべてのリソースにアクセスできるということです。リソース識別子をトークンに追加する必要があります。これは、クライアントの資格情報付与では不可能です。 –
1つの添付ファイルでスコープを絞り込むことはできませんか?例えば'attachment.read.attachmentid.142184712984721' – SilverlightFox