private void DoLogout(HttpContext context, bool IdPInitiated) { foreach (IAction action in Actions.Actions.GetActions()) { Trace.TraceMethodCalled(action.GetType(), "LogoutAction()"); action.LogoutAction(this, context, IdPInitiated); Trace.TraceMethodDone(action.GetType(), "LogoutAction()"); } }
/// <summary> /// Is called before the assertion is made into a strongly typed representation /// </summary> /// <param name="context">The httpcontext.</param> /// <param name="elem">The assertion element.</param> /// <param name="endpoint">The endpoint.</param> protected virtual void PreHandleAssertion(HttpContext context, XmlElement elem, IDPEndPoint endpoint) { Trace.TraceMethodCalled(GetType(), "PreHandleAssertion"); if (endpoint != null && endpoint.SLOEndpoint != null && !String.IsNullOrEmpty(endpoint.SLOEndpoint.IdpTokenAccessor)) { ISaml20IdpTokenAccessor idpTokenAccessor = Activator.CreateInstance(Type.GetType(endpoint.SLOEndpoint.IdpTokenAccessor, false)) as ISaml20IdpTokenAccessor; if (idpTokenAccessor != null) { idpTokenAccessor.ReadToken(elem); } } Trace.TraceMethodDone(GetType(), "PreHandleAssertion"); }
private void DoLogin(HttpContext context, Saml20Assertion assertion) { //User is now logged in at IDP specified in tmp context.Session[IDPLoginSessionKey] = context.Session[IDPTempSessionKey]; context.Session[IDPSessionIdKey] = assertion.SessionIndex; context.Session[IDPNameIdFormat] = assertion.Subject.Format; context.Session[IDPNameId] = assertion.Subject.Value; if (Trace.ShouldTrace(TraceEventType.Information)) { Trace.TraceData(TraceEventType.Information, string.Format(Tracing.Login, assertion.Subject.Value, assertion.SessionIndex, assertion.Subject.Format)); } string inResponseTo = "(unknown)"; if (assertion.GetSubjectConfirmationData() != null && assertion.GetSubjectConfirmationData().InResponseTo != null) { inResponseTo = assertion.GetSubjectConfirmationData().InResponseTo; } string assuranceLevel = "(unknown)"; foreach (var attribute in assertion.Attributes) { if (attribute.Name == "dk:gov:saml:attribute:AssuranceLevel" && attribute.AttributeValue != null && attribute.AttributeValue.Length > 0) { assuranceLevel = attribute.AttributeValue[0]; } } AuditLogging.logEntry(Direction.IN, Operation.LOGIN, string.Format("Subject: {0} NameIDFormat: {1} Level of authentication: {2} Session timeout in minutes: {3}", assertion.Subject.Value, assertion.Subject.Format, assuranceLevel, HttpContext.Current.Session.Timeout)); foreach (IAction action in Actions.Actions.GetActions()) { Trace.TraceMethodCalled(action.GetType(), "LoginAction()"); action.LoginAction(this, context, assertion); Trace.TraceMethodDone(action.GetType(), "LoginAction()"); } }