WSFederation認証プロバイダをIdentityServer4に追加しようとしています。 最近、Microsoft.AspNetCore.Authentication.WsFederation Preview 2がリリースされ、これを通常のAsp.NetCore-Applicationに追加することができました。IdentityServer4として.Net Core WSFederationプレビュー2を持つWSFederation-clientとして
しかし、それをIdentityServer4 EntityFramework-Quickstart-Exampleに追加するのは苦労しています。
これは私が私のStartup.cs/ConfigureServices-方法でAuthenticationProviderを追加する方法です:
services.AddAuthentication()
.AddWsFederation("WsFederation", options =>
{
options.Wtrealm = realm;
options.MetadataAddress = metadata;
})
私はフロントエンドでWSFederationためのボタンを持って、私もサインインすることができます。しかし、コールバックした後、私が取得。このエラー:これはどこから来るのか、私は理解することができます
InvalidOperationException: sub claim is missing IdentityServer4.Hosting.IdentityServerAuthenticationService.AssertRequiredClaims(ClaimsPrincipal principal)
、それは「サブ」-claimを期待し、IdentityServer4のIdentityServerAuthenticationService.csでthis lineだ - WSFedは、このような主張を返しません。
if (principal.FindFirst(JwtClaimTypes.Subject) == null) throw new InvalidOperationException("sub claim is missing");
彼らはこのために使用することができように見えるクイックスタート・プロジェクトでは、いくつかのテーブル、特に2がありますが、私の知る限り見ることができるように、私は、この主張を設定することはできません。
私はすでに主張の代わりに使用したいクレームをテーブルに追加しようとしましたが、それは影響を与えていないようです。また、データベースが私が追加するアイデンティティプロバイダにどのようにマップするのかもわかりませんコードで私は次のステップについてのヒントがあればうれしく思います。もしあなたが何か良い例を知っていれば、それはさらに良いでしょう。
P.S .:このトピックに関するいくつかの質問は既にありますが、WSFederationの.Netコア実装が利用可能になる前か、WSFederation-serverのサンプルを参照してクライアントを参照する前であってもかまいません。
私は(「サブ」のような)IdentityProvider互換請求に(UPNのような)WSFedクレームを変換するWSFederation認証を拡張するカスタムAuthenticationproviderようなものを実装するためのアイデアを持っていた - しかし、これが最もエレガントな方法であるかどうかはわかりません。ソースコードを踏んで、ドキュメントを読んでもっと調べようとしています。 – Compufreak