2017-08-16 14 views
1

私は新しいasp.net core 2.0 APIアプリケーションでJWT Bearer authを使用していますが、現在のIDに追加のクレームを追加したいと考えています。この追加情報は、問い合わせが必要な別のAPIにあります。私の理解は、クレーム変換がこれを行うための適切な場所であるということです。 .netコア1.1では、Microsoft.AspNetCore.Authentication nugetパッケージにIClaimsTransformerインターフェイスがありますが、これは私の.netコア2.0アプリケーションにはインストールできません。 asp.netコア2.0の主張を変換する別の方法がありますか?これは私のユースケースの正しいアプローチですか?asp.net core 2.0クレーム変換サポートがありません

答えて

3

ASP.NETコア2.0のクレームを変換するもう1つの方法があります。ユーザーストアにアクセスできるため、ユーザーのデータを取得してその情報をクレームとして追加することができます。基本的には、インターフェイスの実装を記述します.IUserClaimsPrincipalFactoryを使用し、Startup.csのConfigureServicesメソッドでカスタム実装をサービスとして追加するように構成します。コア1.xからのコア2.0の主な変更点は、アイデンティティがIDパイプラインでミドルウェアを使用するのではなく、サービスの依存性注入に依存していることです。カスタムIUserClaimsPrincipalFactoryの作成に関する完全な例と、このblog postの承認にどのように使用するかについての完全な例があります。

+0

あなたはSSOのシナリオでは、 'IUserClaimsPrincipalFactory'を使用する方法を詳しく説明することはできますか? – Liero

1

IClaimsTransformerは、ASP.NET Core 2.0ではIClaimsTransformationに変更されました。

とクレーム変換シンプル、新しいIClaimsTransformationサービス、単一の方法:タスクTransformAsync(ClaimsPrincipal 校長)私たちはどんな成功AuthenticateAsyncコールでこれを呼び出します。

services.AddSingleton<IClaimsTransformation, ClaimsTransformer>(); 

private class ClaimsTransformer : IClaimsTransformation { 
    // Can consume services from DI as needed, including scoped DbContexts 
    public ClaimsTransformer(IHttpContextAccessor httpAccessor) { } 
    public Task<ClaimsPrincipal> TransformAsync(ClaimsPrincipal p) { 
     p.AddIdentity(new ClaimsIdentity()); 
     return Task.FromResult(p); 
    } 
} 

参照https://github.com/aspnet/Security/issues/1310

関連する問題