0

そこで、PluralSight のいくつかのガイドと公開されているガイドを使用して、IdentityServer4 のセットアップを試みてきました。

Core2.1 ですべてを動作させることができますが、Core3.1 で IdentityServer4 を構築しようとするとすぐに (フレームワークのすべての最新リリースと、Core2.1 の例とまったく同じ構成で)、私の webAPI はできません。トークンが存在する場合でも、クライアント アプリケーションを承認します。

WebAPI は、IdentityServer3.Contrib.AccessTokenValidation パッケージを使用する .NET4.x プロジェクトです。

IDP スタートアップ構成 (Core2.1 および Core3.1 プロジェクトで同じ):

services
   .AddIdentityServer()
   .AddDeveloperSigningCredential()
   .AddTestUsers(SeedData.GetUsers())
   .AddInMemoryIdentityResources(SeedData.GetIdentityResources())
   .AddInMemoryApiResources(SeedData.GetApiResources())
   .AddInMemoryClients(SeedData.GetClients());

WebAPI スタートアップ構成 (IdentityServer3.Contrib.AccessTokenValidation) は Core2.1 IdentityServer4 では機能しますが、Core3.1 IdentityServer4 では機能しません

public void Configuration(IAppBuilder app) {
   app.UseIdentityServerBearerTokenAuthentication(new IdentityServer3.AccessTokenValidation.IdentityServerBearerTokenAuthenticationOptions() {
      Authority = "https://localhost:44314/",
      ClientId = "kpcwebapi",
      RequiredScopes = new[] { "kpcwebapi" },
   });
}

クライアント アプリケーションの構成は Core2.1 IdentityServer4 では機能しますが、Core3.1 IdentityServer4 では機能しません

services.AddOpenIdConnect("oidc", options => {
    options.SignInScheme = "Cookies";
    options.Authority = "https://localhost:44314/";
    options.ClientId = "testHybrid";
    options.ResponseType = "code id_token";
    options.Scope.Add("openid"); 
    options.Scope.Add("profile"); 
    options.Scope.Add("kpcwebapi");
    options.SaveTokens = true;
    options.ClientSecret = "secret";
    options.GetClaimsFromUserInfoEndpoint = true;
    options.ClaimActions.Remove("amr");
    options.ClaimActions.DeleteClaim("sid");
    options.ClaimActions.DeleteClaim("idp");
    options.TokenValidationParameters = new TokenValidationParameters {
       NameClaimType = JwtClaimTypes.GivenName,
       RoleClaimType = JwtClaimTypes.Role,
    };    
});

すべてがCore2.1で完全に機能するため、構成が正しいと確信しています 私の質問は、自分で見つけることができないため、WebAPIが機能しなくなったCore3.1 IdentityServer4で何かが変更されましたか? IdentityServer4 (Core3.1 用) の最新リリースに大きなバグ/問題があると思い始めています... OpenIDConnect を使用しているため... IdentityServer の更新時に認証は引き続き機能するはずですか?

面白いことに、API の開始時に、IDP が実行されていないときはいつでも例外が発生します。IDP が実行されている場合は、エラーや障害なしでステートメントを渡します。したがって、私の API は実際に IDP (Core2.1 と Core3.1 の両方) への接続を確立しますが、Core3.1 IDP の場合、クライアント アプリから受信した呼び出しは認証/承認されません。

Core3.1で動作させるために2週間の時間を失ったので、誰かが私が間違っていることを知っている場合は、それを共有していただければ幸いです...

4

1 に答える 1