IdentityServer3을 사용하여 SSO (Single Sign On) 솔루션을 구현 중입니다. IdenitityServer를 호스팅하는 ASP.NET 4.5.2 (MVC) 응용 프로그램이 있습니다. 로그인 한 모든 사용자를 추적하고 활동을 데이터베이스에 저장해야한다는 요구 사항이 있습니다. 그건 내 사용자 정의 정체성 서버에서 로그인 시간에, 나는 사용자 ID와 함께 발행 된 ASP.NET Identitiy 세션 ID를 기록해야합니다. 그런 다음 클라이언트 응용 프로그램 중 하나를 사용하면 사용자 정의 Identitiy Server로 신호를 전송합니다. 신호에는 ASP.NET ID 세션이 포함됩니다. 이 신호는 모든 클라이언트에서 활동을 탐지하는 데 사용되므로 사용자 정의 Identitiy Server는 사용자 세션의 유효 기간을 연장 할 수 있습니다. 이 논리는 사용자가 다른 클라이언트에 로그인하기로 결정한 경우 필요합니다.액세스 할 수있는 현재 ASP.NET ID 세션 ID가있는 IdentityServer3의 콜백
내가 직면 한 기술적 과제는 로컬 로그인 직후에 Identity Server에서 현재 ASP.NET Identitiy 세션 ID가 포함 된 위치를 찾는 것입니다.
지금까지 내가 IUserService 내가 구현할 수있는 사용자 정의에 다음과 같은 기능을 발견 : 내 사용자 지정 IUserService에서
// Summary:
// This method is called prior to the user
// being issued a login cookie for IdentityServer.
//
// Parameters:
// context:
// The context.
public virtual Task PostAuthenticateAsync(PostAuthenticationContext context);
을, 나는 IOwinContext을 주입했지만, 주석 상태로,이 기능은 을 호출 한 후 사용자가 IdentityServer 쿠키를 발급받습니다.
IdentityServer3의 documentation을 탐색했으며 전체 로그인이 실행 된 후 실행되는 파이프 라인에 사용자 지정 코드를 연결할 수있는 단일 위치를 찾을 수 없습니다. 나는 새로운 사용자가 현재 로그인되어 있고, 어떤 ASP.NET 식별자 세션 아이디가 그의 데이터베이스에 속해 있는지 데이터베이스에 쓸 수 있도록 그와 같은 장소가 필요하다.
세션 ID가 포함 된 유일한 이벤트는 토큰 발행 이벤트입니다. 항상 세션을 포함하도록 보장됩니까? if (evt.Name == "Identity token issued"&& evt.Details is TokenIssuedDetailsBase) {} –
다른 이벤트의 세션 ID를 향상시켜야하는 경우 github 발행물 추적기에서 문제를 엽니 다. –
현재 작동하지만, 항상 그럴 것인지 궁금합니다. 나는 미래에 땀을 흘리고 싶지 않다. 답변 해주셔서 감사합니다! :) –