.NETコアのユニットインジェクションと依存関係インジェクション機能を使用して解決しようとしているこのカスタム認可スキームがあります。.NETコアカスタム認可依存インジェクション
インターフェイスIStsHttpClientとクラスStsHttpClientを作成しました。このクラスは、&のトークンをデコードする内部Webサービスに接続します。これはちょうど1つのメソッド "DecodeToken(文字列トークン)"を持っており、コンストラクタは非常に単純です - DIからロードされたオプションオブジェクトを取り込みます。
私のAuthorizationHandlerは理論的にはIStsHttpClientを使ってトークンを呼び出し、デコードします。私の質問は、オンラインの例に基づいて、認可ハンドラを正しく指定/構築する方法がわかりません(下記のコードを参照)。ここ
認証コード:
public class MyAuthorizationRequirement : AuthorizationHandler<MyAuthorizationRequirement >, IAuthorizationRequirement
{
const string Bearer = "Bearer ";
readonly IStsHttpClient _client;
public BuzzStsAuthorizationRequirement([FromServices]IStsHttpClient client)
{
_client = client;
}
protected override async Task HandleRequirementAsync(AuthorizationHandlerContext context, MyStsAuthorizationRequirement requirement)
{
/* remaining code omitted - but this will call IStsHttpClient.Decode() */
マイStartup.cs
public void ConfigureServices(IServiceCollection services)
{
services.Configure<StsHttpOptions>(Configuration.GetSection("StsConfigurationInfo"));
services.AddScoped<IStsHttpClient , StsHttpClient >();
services.AddAuthorization(options =>
{
options.AddPolicy("Authorize", policy =>
{
/* initialize this differently?? */
policy.AddRequirements(new MyStsAuthorizationRequirement(/* somethign is needed here?? */));
});
});
I欲しいです。 –