IdentityServer4에 WSFederation 인증 공급자를 추가하려고합니다. 최근에 Microsoft.AspNetCore.Authentication.WsFederation Preview 2이 출시되었으며이를 정상적인 Asp.NetCore-Application에 추가 할 수있었습니다..Net Core WSFederation preview2를 사용하는 IdentityServer4.
그러나 IdentityServer4 EntityFramework-Quickstart-Example에 추가하는 데 어려움을 겪고 있습니다. 내 Startup.cs/ConfigureServices-방법에 AuthenticationProvider에 추가하는 방법을
이
은 다음과 같습니다. 나는 프런트 엔드에 WSFederation의 버튼을했고 나는 또한 로그인 할 수 있습니다하지만 콜백 후 내가 얻을services.AddAuthentication()
.AddWsFederation("WsFederation", options =>
{
options.Wtrealm = realm;
options.MetadataAddress = metadata;
})
: -이 오류 WSFed 같은 주장을 반환하지 않는이가 IdentityServer4의 IdentityServerAuthenticationService.cs에서
this line입니다, 어디에서 오는지
이
InvalidOperationException: sub claim is missing IdentityServer4.Hosting.IdentityServerAuthenticationService.AssertRequiredClaims(ClaimsPrincipal principal)
내가 이해할 수있는, 그것은 "하위"-claim 기대
if (principal.FindFirst(JwtClaimTypes.Subject) == null) throw new InvalidOperationException("sub claim is missing");
지금까지 나는 그들이이 사용될 수 있습니다처럼 보일 빠른 시작 - 프로젝트의 일부 테이블은, 특히 2가 있지만, 나는이 주장을 구성 할 수 없습니다 볼 수 있습니다 :
이미 제목에 대한 소유권 주장 대신 테이블에 사용하려는 소유권 주장을 추가하려고했지만 영향력이없는 것으로 보입니다. 또한 데이터베이스가 내가 추가 한 ID 공급자에 매핑되는 방식을 모르겠습니다. 코드에서. 나는 다음 단계에 대한 어떤 힌트라도 기뻐할 것이며, 어떤 예를 알게된다면 더 나아질 것입니다.
추신 : 이미이 항목과 관련하여 몇 가지 질문이 있지만 WSFederation의 .Net Core 구현을 사용할 수 있거나 WSFederation 서버의 샘플을 참조하지만 클라이언트는 참조하지 않았습니다.
난 그냥 ("하위"같은) IdentityProvider 호환 주장 (UPN 같은) WSFed-주장을 변환하는 WSFederation 인증을 확장하는 사용자 정의 AuthenticationProvider에 뭔가를 구현하는 생각을했다 -하지만 이것이 가장 우아한 방법이 될지 모르겠습니다. 소스 코드를 단계별로 실행하고 문서를 읽음으로써 더 많은 것을 찾으려고합니다. – Compufreak