This class is responsible for managing local sessions (via a synchronized pattern) as well as upstream sessions which need to interact with the upstream, as well as transitioning between the two.
/// Example ImplementationusingSanteDB.Core.Security.Services;/// Other usings herepublicclassMySessionProviderService:SanteDB.Core.Security.Services.ISessionProviderService { publicString ServiceName =>"My own ISessionProviderService service"; /// <summary> /// Fired when the session provider service has established /// </summary>publiceventEventHandler<SessionEstablishedEventArgs> Established; /// <summary> /// Fired when the session provider service has ended by the user's decision /// </summary>publiceventEventHandler<SessionEstablishedEventArgs> Abandoned; /// <summary> /// Fired when the session provider service has been extended /// </summary>publiceventEventHandler<SessionEstablishedEventArgs> Extended; /// <summary> /// Establishes a session for the specified principal /// </summary>publicISessionEstablish(IPrincipal principal,String remoteEp,Boolean isOverride,String purpose,String[] scope,String lang){thrownewSystem.NotImplementedException(); } /// <summary> /// Authenticates the session identifier as evidence of session /// </summary>publicISessionGet(Byte[] sessionId,Boolean allowExpired){thrownewSystem.NotImplementedException(); } /// <summary> /// Gets active sessions for the user. /// </summary>publicISession[] GetUserSessions(Guid userKey){thrownewSystem.NotImplementedException(); } /// <summary> /// Extend the session with the specified refresh token /// </summary>publicISessionExtend(Byte[] refreshToken){thrownewSystem.NotImplementedException(); } /// <summary> /// Abandons the session /// </summary>publicvoidAbandon(ISession session){thrownewSystem.NotImplementedException(); }publicISession[] GetActiveSessions(){thrownewSystem.NotImplementedException(); }}