public void SignInCommand_Run_MapsReturnUrl() { var defaultDestination = Options.FromConfiguration.IdentityProviders.Default.SingleSignOnServiceUrl; var httpRequest = new HttpRequestData("GET", new Uri("http://localhost/signin?ReturnUrl=%2FReturn.aspx")); var actual = new SignInCommand().Run(httpRequest, Options.FromConfiguration); actual.RequestState.ReturnUrl.Should().Be("http://localhost/Return.aspx"); }
public void SignInCommand_Run_PublicOrigin() { var options = StubFactory.CreateOptionsPublicOrigin(new Uri("https://my.public.origin:8443")); var idp = options.IdentityProviders.Default; var request = new HttpRequestData("GET", new Uri("http://sp.example.com?idp=" + Uri.EscapeDataString(idp.EntityId.Id))); var subject = new SignInCommand().Run(request, Options.FromConfiguration); subject.Location.Host.Should().Be(new Uri("https://idp.example.com").Host); }
public void SignInCommand_Run_With_Idp2_ReturnsAuthnRequestForSecondIdp() { var secondIdp = Options.FromConfiguration.IdentityProviders[1]; var secondDestination = secondIdp.SingleSignOnServiceUrl; var secondEntityId = secondIdp.EntityId; var request = new HttpRequestData("GET", new Uri("http://sp.example.com?idp=" + Uri.EscapeDataString(secondEntityId.Id))); var subject = new SignInCommand().Run(request, Options.FromConfiguration); subject.Location.Host.Should().Be(secondDestination.Host); }
public void SignInCommand_Run_MapsReturnUrl() { var defaultDestination = Options.FromConfiguration.IdentityProviders.Default.SingleSignOnServiceUrl; var httpRequest = new HttpRequestData("GET", new Uri("http://localhost/signin?ReturnUrl=%2FReturn.aspx")); var subject = new SignInCommand().Run(httpRequest, Options.FromConfiguration); var idp = Options.FromConfiguration.IdentityProviders.Default; var relayState = HttpUtility.ParseQueryString(subject.Location.Query)["RelayState"]; StoredRequestState storedAuthnData; PendingAuthnRequests.TryRemove(relayState, out storedAuthnData); storedAuthnData.ReturnUrl.Should().Be("http://localhost/Return.aspx"); }
public void SignInCommand_Run_MapsReturnUrl_UsingPublicOrigin_RelativePath() { var defaultDestination = Options.FromConfiguration.IdentityProviders.Default.SingleSignOnServiceUrl; var httpRequest = new HttpRequestData( "GET", new Uri("http://localhost/localpath/account/signin?ReturnUrl=Return.aspx"), "/localpath", null, null); var options = Options.FromConfiguration; ((SPOptions)options.SPOptions).PublicOrigin = new Uri("https://externalhost/path/"); var actual = new SignInCommand().Run(httpRequest, options); actual.RequestState.ReturnUrl.Should().Be("https://externalhost/path/account/Return.aspx"); }
public void SignInCommand_Run_MapsReturnUrl() { var defaultDestination = Options.FromConfiguration.IdentityProviders.Default.SingleSignOnServiceUrl; var httpRequest = new HttpRequestData("GET", new Uri("http://localhost/signin?ReturnUrl=%2FReturn.aspx")); var subject = new SignInCommand().Run(httpRequest, Options.FromConfiguration); var idp = Options.FromConfiguration.IdentityProviders.Default; var authnRequest = idp.CreateAuthenticateRequest(null, StubFactory.CreateAuthServicesUrls()); var requestId = AuthnRequestHelper.GetRequestId(subject.Location); StoredRequestState storedAuthnData; PendingAuthnRequests.TryRemove(new System.IdentityModel.Tokens.Saml2Id(requestId), out storedAuthnData); storedAuthnData.ReturnUrl.Should().Be("http://localhost/Return.aspx"); }
public void SignInCommand_Run_ReturnsAuthnRequestForDefaultIdp() { var defaultDestination = Options.FromConfiguration.IdentityProviders.Default.SingleSignOnServiceUrl; var subject = new SignInCommand().Run( new HttpRequestData("GET", new Uri("http://example.com")), Options.FromConfiguration); var expected = new CommandResult() { HttpStatusCode = HttpStatusCode.SeeOther, Cacheability = (Cacheability) HttpCacheability.NoCache, Location = new Uri(defaultDestination + "?SAMLRequest=XYZ") }; subject.ShouldBeEquivalentTo(expected, options => options.Excluding(cr => cr.Location)); subject.Location.Host.Should().Be(defaultDestination.Host); var queries = HttpUtility.ParseQueryString(subject.Location.Query); queries.Should().HaveCount(1); queries.Keys[0].Should().Be("SAMLRequest"); queries[0].Should().NotBeEmpty(); }
public void SignInCommand_Run_ReturnsRedirectToDiscoveryService() { var dsUrl = new Uri("http://ds.example.com"); var options = new Options(new SPOptions { DiscoveryServiceUrl = dsUrl, EntityId = new EntityId("https://github.com/KentorIT/authservices") }); var request = new HttpRequestData("GET", new Uri("http://localhost/signin?ReturnUrl=%2FReturn%2FPath")); var result = new SignInCommand().Run(request, options); result.HttpStatusCode.Should().Be(HttpStatusCode.SeeOther); var queryString = string.Format("?entityID={0}&return={1}&returnIDParam=idp", Uri.EscapeDataString(options.SPOptions.EntityId.Id), Uri.EscapeDataString( "http://localhost/AuthServices/SignIn?ReturnUrl=" + Uri.EscapeDataString("/Return/Path"))); var expectedLocation = new Uri(dsUrl + queryString); result.Location.Should().Be(expectedLocation); }
public void SignInCommand_Run_ReturnsAuthnRequestForDefaultIdp() { var idp = Options.FromConfiguration.IdentityProviders.Default; var defaultDestination = idp.SingleSignOnServiceUrl; var result = new SignInCommand().Run( new HttpRequestData("GET", new Uri("http://example.com")), Options.FromConfiguration); result.HttpStatusCode.Should().Be(HttpStatusCode.SeeOther); result.Cacheability.Should().Be((Cacheability)HttpCacheability.NoCache); result.Location.Host.Should().Be(defaultDestination.Host); var queries = HttpUtility.ParseQueryString(result.Location.Query); queries.Should().HaveCount(2); queries["SAMLRequest"].Should().NotBeEmpty(); queries["RelayState"].Should().NotBeEmpty(); }