public async Task ChallengeWillUseEvents() { var queryValues = new ExpectedQueryValues(DefaultAuthority); var queryValuesSetInEvent = new ExpectedQueryValues(DefaultAuthority); var server = CreateServer(options => { SetOptions(options, DefaultParameters(), queryValues); options.Events = new OpenIdConnectEvents() { OnRedirectToAuthenticationEndpoint = context => { context.ProtocolMessage.ClientId = queryValuesSetInEvent.ClientId; context.ProtocolMessage.RedirectUri = queryValuesSetInEvent.RedirectUri; context.ProtocolMessage.Resource = queryValuesSetInEvent.Resource; context.ProtocolMessage.Scope = queryValuesSetInEvent.Scope; return(Task.FromResult <object>(null)); } }; }); var transaction = await SendAsync(server, DefaultHost + Challenge); Assert.Equal(HttpStatusCode.Redirect, transaction.Response.StatusCode); queryValuesSetInEvent.CheckValues(transaction.Response.Headers.Location.AbsoluteUri, DefaultParameters()); }
public async Task ChallengeWillUseNotifications() { var queryValues = new ExpectedQueryValues(DefaultAuthority); var queryValuesSetInNotification = new ExpectedQueryValues(DefaultAuthority); var server = CreateServer(options => { SetOptions(options, DefaultParameters(), queryValues); options.Notifications = new OpenIdConnectAuthenticationNotifications { RedirectToIdentityProvider = notification => { notification.ProtocolMessage.ClientId = queryValuesSetInNotification.ClientId; notification.ProtocolMessage.RedirectUri = queryValuesSetInNotification.RedirectUri; notification.ProtocolMessage.Resource = queryValuesSetInNotification.Resource; notification.ProtocolMessage.Scope = queryValuesSetInNotification.Scope; return(Task.FromResult <object>(null)); } }; }); var transaction = await SendAsync(server, DefaultHost + Challenge); transaction.Response.StatusCode.ShouldBe(HttpStatusCode.Redirect); queryValuesSetInNotification.CheckValues(transaction.Response.Headers.Location.AbsoluteUri, DefaultParameters()); }
public async Task ChallengeWillUseOptionsProperties() { var queryValues = new ExpectedQueryValues(DefaultAuthority); var server = CreateServer(options => { SetOptions(options, DefaultParameters(), queryValues); }); var transaction = await SendAsync(server, DefaultHost + Challenge); transaction.Response.StatusCode.ShouldBe(HttpStatusCode.Redirect); queryValues.CheckValues(transaction.Response.Headers.Location.AbsoluteUri, DefaultParameters()); }
public async Task SignOutSettingMessage() { var configuration = new OpenIdConnectConfiguration { EndSessionEndpoint = ExpectedLogoutRequest }; var queryValues = new ExpectedQueryValues(DefaultAuthority, configuration) { RequestType = OpenIdConnectRequestType.LogoutRequest }; var server = CreateServer(SetProtocolMessageOptions); var transaction = await SendAsync(server, DefaultHost + Signout); Assert.Equal(HttpStatusCode.Redirect, transaction.Response.StatusCode); queryValues.CheckValues(transaction.Response.Headers.Location.AbsoluteUri, new string[] { }); }
public async Task ChallengeSettingMessage(string challenge, OpenIdConnectRequestType requestType) { var configuration = new OpenIdConnectConfiguration { AuthorizationEndpoint = ExpectedAuthorizeRequest, EndSessionEndpoint = ExpectedLogoutRequest }; var queryValues = new ExpectedQueryValues(DefaultAuthority, configuration) { RequestType = requestType }; var server = CreateServer(SetProtocolMessageOptions); var transaction = await SendAsync(server, DefaultHost + challenge); transaction.Response.StatusCode.ShouldBe(HttpStatusCode.Redirect); queryValues.CheckValues(transaction.Response.Headers.Location.AbsoluteUri, new string[] {}); }
public async Task ChallengeSettingState(string userState, string challenge) { var queryValues = new ExpectedQueryValues(DefaultAuthority); var stateDataFormat = new AuthenticationPropertiesFormaterKeyValue(); var properties = new AuthenticationProperties(); if (challenge == ChallengeWithProperties) { properties.Items.Add("item1", Guid.NewGuid().ToString()); } var server = CreateServer(options => { SetOptions(options, DefaultParameters(new string[] { OpenIdConnectParameterNames.State }), queryValues, stateDataFormat); options.AutomaticChallenge = challenge.Equals(ChallengeWithOutContext); options.Events = new OpenIdConnectEvents() { OnRedirectToAuthenticationEndpoint = context => { context.ProtocolMessage.State = userState; context.ProtocolMessage.RedirectUri = queryValues.RedirectUri; return(Task.FromResult <object>(null)); } }; }, null, properties); var transaction = await SendAsync(server, DefaultHost + challenge); Assert.Equal(HttpStatusCode.Redirect, transaction.Response.StatusCode); if (challenge != ChallengeWithProperties) { if (userState != null) { properties.Items.Add(OpenIdConnectDefaults.UserstatePropertiesKey, userState); } properties.Items.Add(OpenIdConnectDefaults.RedirectUriForCodePropertiesKey, queryValues.RedirectUri); } queryValues.State = stateDataFormat.Protect(properties); queryValues.CheckValues(transaction.Response.Headers.Location.AbsoluteUri, DefaultParameters(new string[] { OpenIdConnectParameterNames.State })); }
public async Task ChallengeWillUseEvents() { var queryValues = new ExpectedQueryValues(DefaultAuthority); var queryValuesSetInEvent = new ExpectedQueryValues(DefaultAuthority); var server = CreateServer(options => { SetOptions(options, DefaultParameters(), queryValues); options.Events = new OpenIdConnectEvents() { OnRedirectToAuthenticationEndpoint = context => { context.ProtocolMessage.ClientId = queryValuesSetInEvent.ClientId; context.ProtocolMessage.RedirectUri = queryValuesSetInEvent.RedirectUri; context.ProtocolMessage.Resource = queryValuesSetInEvent.Resource; context.ProtocolMessage.Scope = queryValuesSetInEvent.Scope; return Task.FromResult<object>(null); } }; }); var transaction = await SendAsync(server, DefaultHost + Challenge); Assert.Equal(HttpStatusCode.Redirect, transaction.Response.StatusCode); queryValuesSetInEvent.CheckValues(transaction.Response.Headers.Location.AbsoluteUri, DefaultParameters()); }
public async Task ChallengeSettingState(string userState, string challenge) { var queryValues = new ExpectedQueryValues(DefaultAuthority); var stateDataFormat = new AuthenticationPropertiesFormaterKeyValue(); var properties = new AuthenticationProperties(); if (challenge == ChallengeWithProperties) { properties.Items.Add("item1", Guid.NewGuid().ToString()); } var server = CreateServer(options => { SetOptions(options, DefaultParameters(new string[] { OpenIdConnectParameterNames.State }), queryValues, stateDataFormat); options.AutomaticChallenge = challenge.Equals(ChallengeWithOutContext); options.Events = new OpenIdConnectEvents() { OnRedirectToAuthenticationEndpoint = context => { context.ProtocolMessage.State = userState; context.ProtocolMessage.RedirectUri = queryValues.RedirectUri; return Task.FromResult<object>(null); } }; }, null, properties); var transaction = await SendAsync(server, DefaultHost + challenge); Assert.Equal(HttpStatusCode.Redirect, transaction.Response.StatusCode); if (challenge != ChallengeWithProperties) { if (userState != null) { properties.Items.Add(OpenIdConnectDefaults.UserstatePropertiesKey, userState); } properties.Items.Add(OpenIdConnectDefaults.RedirectUriForCodePropertiesKey, queryValues.RedirectUri); } queryValues.State = stateDataFormat.Protect(properties); queryValues.CheckValues(transaction.Response.Headers.Location.AbsoluteUri, DefaultParameters(new string[] { OpenIdConnectParameterNames.State })); }
public async Task ChallengeWillUseNotifications() { var queryValues = new ExpectedQueryValues(DefaultAuthority); var queryValuesSetInNotification = new ExpectedQueryValues(DefaultAuthority); var server = CreateServer(options => { SetOptions(options, DefaultParameters(), queryValues); options.Notifications = new OpenIdConnectAuthenticationNotifications { RedirectToIdentityProvider = notification => { notification.ProtocolMessage.ClientId = queryValuesSetInNotification.ClientId; notification.ProtocolMessage.RedirectUri = queryValuesSetInNotification.RedirectUri; notification.ProtocolMessage.Resource = queryValuesSetInNotification.Resource; notification.ProtocolMessage.Scope = queryValuesSetInNotification.Scope; return Task.FromResult<object>(null); } }; }); var transaction = await SendAsync(server, DefaultHost + Challenge); transaction.Response.StatusCode.ShouldBe(HttpStatusCode.Redirect); queryValuesSetInNotification.CheckValues(transaction.Response.Headers.Location.AbsoluteUri, DefaultParameters()); }