2017-10-01 59 views
2

WebアプリケーションとAPIの両方でAsp.Net Core 1.1にあるテスト用に既存の小さなアプリケーションがあります。 Azure AD B2Cを使用して行われます。 .Net Core 2.0に移行しようとしていますが、動作させる方法を理解できません.GitHub Azure-SamplesのサンプルをWeb AppとAPIに使用してみましたが、 2.0を使用してWebアプリケーションからWeb APIを呼び出し、AD B2Cによって保護されている実例があれば、apiにアクセスしようとしています。WebアプリケーションとAPIの認証にAsp.Net Core 2.0とAzure AD B2C

編集: 私がテストに使用したサンプルは以下のとおりです。 Webアプリケーション:WebApp-OpenIDConnect-DotNet core2.0 Web APIを:B2C-WebApi core2.0 、私は私のB2Cのディレクトリを一致させるのAppSettings値を変更しました。

私のasp.netコア1.1テストアプリケーションでは、私は上記と同じサンプルを使用していますが、appsettingsと同じ値を持つマスターブランチから使用しています。デフォルトでは編集2

、startup.csに私はこの持っている:私は次のエラーを与える

 services.AddAuthentication() 
      .AddJwtBearer(option => new JwtBearerOptions 
      { 
       Authority = string.Format("https://login.microsoftonline.com/tfp/{0}/{1}/v2.0/", 
       Configuration["Authentication:AzureAd:Tenant"], Configuration["Authentication:AzureAd:Policy"]), 
       Audience = Configuration["Authentication:AzureAd:ClientId"], 
       Events = new JwtBearerEvents 
       { 
        OnAuthenticationFailed = AuthenticationFailed 
       } 
      }); 

Microsoft.AspNetCore.Hosting.Internal.WebHost:情報:要求HTTP/1.1を開始します。
Microsoft.AspNetCore.Server.Kestrel:エラー:接続ID "0HL89JHF4VBLM"、要求ID "0HL89JHF4VBLM:00000001":未処理の例外がアプリケーションによってスローされました。 System.InvalidOperationException:authenticationSchemeが指定されておらず、DefaultChallengeSchemeが見つかりませんでした。

その

 services.AddAuthentication(sharedOption => 
     { 
      sharedOption.DefaultScheme = JwtBearerDefaults.AuthenticationScheme; 
     }) 

エラーなどの修正services.AddAuthenticationは今

Microsoft.AspNetCore.Authentication.JwtBearer.JwtBearerHandlerの場合:情報:トークンXXXの検証に失敗しました。 Microsoft.IdentityModel.Tokens.SecurityTokenInvalidSignatureException:IDX10500:署名の検証に失敗しました。署名を検証するためのセキュリティキーは提供されていません。 Microsoft.AspNetCoreでSystem.IdentityModel.Tokens.Jwt.JwtSecurityTokenHandler.ValidateToken(文字列トークン、TokenValidationParameters validationParameters、セキュリティトークン& validatedToken)でSystem.IdentityModel.Tokens.Jwt.JwtSecurityTokenHandler.ValidateSignature(文字列トークン、TokenValidationParameters validationParameters) で 。 Authentication.JwtBearer.JwtBearerHandler.d__6.MoveNext()

+0

それを設定するためにlinkをクリックして従ってくださいあなたを助ける情報あなたが利用したサンプル、使用しているコード、HTTPリクエスト、およびトークンペイロードへのリンクを追加できますか? – Saca

+0

@Saca、私はリンクや詳細を追加する質問を編集しました。私が行った設定や変更を除いて –

+0

AppとApiが.net core 1.1である場合、またはAppが2.0でApiが1.1の場合に機能します。 AppとApiが2.0の場合、またはAppが1.1でApiが2.0の場合は動作しません –

答えて

0

私はこの問題(Link)を補正サンプルのプルリクエストを見て、services.AddAuthenticationは変更になる必要があります。

 services.AddAuthentication(options => 
      { 
      options.DefaultScheme = JwtBearerDefaults.AuthenticationScheme; 
          }) 
      .AddJwtBearer(jwtOptions => 
      { 
      jwtOptions.Authority = $"https://login.microsoftonline.com/tfp/{Configuration["Authentication:AzureAd:Tenant"]}/{Configuration["Authentication:AzureAd:Policy"]}/v2.0/"; 
      jwtOptions.Audience = Configuration["Authentication:AzureAd:ClientId"]; 
      jwtOptions.Events = new JwtBearerEvents 
           { 
       OnAuthenticationFailed = AuthenticationFailed 
            }; 
      }); 
0

私はこれを得ましたコア1.1とコア2の両方で動作する例0は、以下のように宣誓認証を追加してください、

services.AddAuthentication(sharedOptions => 
      { 
       sharedOptions.DefaultScheme = CookieAuthenticationDefaults.AuthenticationScheme; 
       sharedOptions.DefaultChallengeScheme = OpenIdConnectDefaults.AuthenticationScheme; 
      }) 
      .AddAzureAdB2C(options => Configuration.Bind("Authentication:AzureAdB2C", options)) 

あなたの設定オプションが azure b2c project

の中に発見されたクラス「AzureAdB2CAuthenticationBuilderExtensions」、の内部で定義されます、あなたのトークンがされていないように見えますAzureから更新すると、あなたのWebアプリケーションからトークンを取得できますか? nullを取得していないことを確認してください。

azure b2cテナントウェブアプリにapiスコープを登録しましたか? 「ApiScopes」:「https://fabrikamb2c.onmicrosoft.com/demoapi/demo.read

あなたのWeb APIにスコープを設定する必要があり、ウェブアプリで読み取ることを可能にする、これは十分ではありません

関連する問題