public SamlAuthenticationFailed(SamlResponse response) { Errors = response.Errors.Select(x => x.Message).ToArray(); Name = response.Subject.Name.Value; Issuer = response.Issuer; SamlId = response.Id; }
public HtmlDocument get_failure_page(SamlResponse response) { var document = new HtmlDocument(); document.Title = "Failure Page"; document.Add("h1").Text("This is the failure page"); document.Push("ul"); response.Errors.Each(x => document.Add("li").Text(x.Message)); return document; }
public void Handle(ISamlDirector director, SamlResponse response) { validate(response); if (response.Errors.Any()) { _logger.InfoMessage(() => new SamlAuthenticationFailed(response)); director.FailedUser(failedContinuation(response)); // just let it go to the login page } else { _logger.InfoMessage(() => new SamlAuthenticationSucceeded(response)); var persistedUsername = createLocalUser(response); director.SuccessfulUser(persistedUsername, successfulContinuation(response)); } }
protected override void beforeRunning() { var destination = Retrieve<SamlDestination>(); _response = new SamlResponse { Id = Guid.NewGuid().ToString(), Status = SamlStatus.Success, Conditions = new ConditionGroup(), Authentication = new AuthenticationStatement(), Destination = (destination.DestinationUrl ?? Application.RootUrl).ToUri() }; _now = Retrieve<ISystemTime>().UtcNow(); _response.IssueInstant = new DateTimeOffset(_now); }
public HtmlDocument get_saml_poster() { var document = new HtmlDocument(); document.Title = "Saml Poster"; var form = new FormTag(_urls.UrlFor<SamlEndpoint>(x => x.post_test_saml())); document.Push(form); var textarea = form.Add("textarea").Attr("name", SamlAuthenticationStrategy.SamlResponseKey).Attr("rows", 20).Attr("cols", "100"); if (SamlResponse != null) { var xml = _writer.Write(SamlResponse); textarea.Attr("value", xml); SamlResponse = null; } form.Add("input").Attr("type", "submit").Attr("value", "Submit").Id("saml-submit"); return document; }
protected virtual void validate(SamlResponse response) { // Nothing }
protected abstract string createLocalUser(SamlResponse response);
protected virtual FubuContinuation failedContinuation(SamlResponse response) { return null; }
protected virtual FubuContinuation successfulContinuation(SamlResponse response) { return null; }
public abstract bool CanHandle(SamlResponse response);
public HtmlDocument WriteRedirectionHtml(SamlResponse response) { var responseString = _writer.Write(response); return new SamlResponseRedirectionDocument(responseString, response.Destination.ToString()); }
protected override string createLocalUser(SamlResponse response) { return response.Subject.Name.Value; }
public override bool CanHandle(SamlResponse response) { return response.AudienceRestrictions.SelectMany(x => x.Audiences).Any(x => _audiences.Contains(x)); }
public SamlAuthenticationSucceeded(SamlResponse response) { Name = response.Subject.Name.Value; Issuer = response.Issuer; SamlId = response.Id; }