1

私はIdentityServer4コア1.0に基づいたアプリケーションを持っています。これは、Azure ADとの連動を実現しています。ただし、プロジェクトをIdentityServer4 2.0.0-rc1に移行した後、統合はもはや機能しません。 .NET Core 1.0からCore 2.0への壊れた変更に関係しています。私はhttps://docs.microsoft.com/en-us/aspnet/core/migration/1x-to-2x/identity-2xIdentityServer4 for Core 2.0でAzure統合を有効にするにはどうすればよいですか?

の提案を以下の私は

services.AddAuthentication() .AddMicrosoftAccount(...)

または

services.AddAuthentication() .AddOpenIdConnect(...)

しかし、これらだけ利回りこのクエリで空のリストのすべてにapp.UseOpenIdConnectAuthenticationのコールを変更しようとしました: _httpContextAccessor.HttpContext.Authentication.GetAuthenticationSchemes()であり、外部認証サービスの構築に使用されます。

Azure AD統合を再び有効にする適切な方法は何ですか?

答えて

1

いくつかの調査の後、私はそれを理解しました。重要な点は、廃止された電話にもう依存しないようにすることです:_httpContextAccessor.HttpContext.Authentication.GetAuthenticationSchemes()。代わりにawait _schemaProvider.GetAllSchemesAsync()を呼び出す必要があります。_schemaProviderはIAuthenticationSchemeProviderの注入インターフェイスです。

services.AddAuthentication(options => { options.DefaultScheme = CookieAuthenticationDefaults.AuthenticationScheme; options.DefaultChallengeScheme = "[custom name]" }) .AddCookie() .AddOpenIdConnect("[custom name]", options => { options.Authority = $"https://login.microsoftonline.com/[tenantid]"; options.ClientId = [client id]; });

注:私はAddOpenIdConnectへの最初のパラメータとして名前を渡され、これにカスタムスキーム名を与えるその他の変更は、このような外部の認証プロバイダを構築する必要がありStartup.cs ConfigureServicesでありますインスタンス。これにより、DisplayNameをまだ渡す方法がわからないため、外部プロバイダをログインページに表示するのに役立ちます。この変更がなければ、 'openIdConnect'と表示されます。私は多くのAADの統合があれば、あまりにも一般的で混乱していると思います。このスキームの変更により、options.DefaultChallengeSchemeが、追加したスキーム名に設定されていることを確認する必要があります。

関連する問題