public async Task <IActionResult> Callback( AuthorizationCodeResponseViewModel authorizationCodeResponseViewModel, ImplicitFlowResponseQueryStringViewModel implicitFlowResponseQueryStringViewModel, ErrorResponseViewModel errorResponseAtResponseViewModel) { if (!string.IsNullOrWhiteSpace(errorResponseAtResponseViewModel.Error)) { var errorResponseAtCallback = OAuthMapper.Map(errorResponseAtResponseViewModel); return(ProcessOAuthClientErrorResponse(errorResponseAtCallback)); } var originalState = (string)TempData.ReadAndClear(Common.State); var codeVerifier = (string)TempData.ReadAndClear(Common.CodeVerifier); var authorizationCodeCallbackResponse = OAuthMapper.Map(authorizationCodeResponseViewModel); var implicitFlowCallbackResponse = OAuthMapper.Map(implicitFlowResponseQueryStringViewModel); var response = await _oAuthFlows.RunFlow( _oAuthClientConfiguration, authorizationCodeCallbackResponse, implicitFlowCallbackResponse, originalState : originalState, codeVerifier : codeVerifier); return(response switch { AccessTokenResponse accessTokenResponse => await SignInUser(accessTokenResponse, originalState), ErrorResponse errorResponse => ProcessOAuthClientErrorResponse(errorResponse) });
public static IOAuthClientResponse Map <T>(T source) { var response = (IOAuthClientResponse)(source switch { AuthorizationCodeResponseViewModel authorizationCodeResponseViewModel => Map(authorizationCodeResponseViewModel), ImplicitFlowResponseQueryStringViewModel implicitFlowResponseViewModel => Map(implicitFlowResponseViewModel), });
public static ImplicitFlowResponse Map(ImplicitFlowResponseQueryStringViewModel source) { if (source == null) { return(null); } var destination = new ImplicitFlowResponse { AccessToken = source.AccessToken, State = source.State, TokenType = source.TokenType, ExpiresIn = source.ExpiresIn, Scope = source.Scope }; return(destination); }
public async Task <IActionResult> Callback( AuthorizationCodeResponseViewModel authorizationCodeResponseViewModel, ImplicitFlowResponseQueryStringViewModel implicitFlowResponseQueryStringViewModel, ErrorResponseViewModel errorResponseAtResponseViewModel) { if (!string.IsNullOrWhiteSpace(errorResponseAtResponseViewModel.Error)) { var errorResponseAtCallback = Utils.Mappers.OAuthMapper.Map(errorResponseAtResponseViewModel); return(ProcessOAuthClientErrorResponse(errorResponseAtCallback)); } var configurationName = (string)TempData.ReadAndClear(TempDataNames.OAuthTesterConfigurationName); var originalState = (string)TempData.ReadAndClear(Common.State); var codeVerifier = (string)TempData.ReadAndClear(Common.CodeVerifier); var oAuthTesterViewModel = Utils.Mappers.OAuthMapper.GetNewOAuthTesterViewModel(configurationName); oAuthTesterViewModel.OAuthClientConfiguration = _optionsMonitor.GetEx(configurationName); var oAuthFlows = _oAuthFlowsFactory.CreateOAuthFlows(configurationName); var authorizationCodeCallbackResponse = Utils.Mappers.OAuthMapper.Map(authorizationCodeResponseViewModel); var implicitFlowCallbackResponse = Utils.Mappers.OAuthMapper.Map(implicitFlowResponseQueryStringViewModel); var response = await oAuthFlows.RunFlow( oAuthTesterViewModel.OAuthClientConfiguration, authorizationCodeCallbackResponse, implicitFlowCallbackResponse, originalState : originalState, codeVerifier : codeVerifier); switch (response) { case AccessTokenResponse accessTokenResponse: oAuthTesterViewModel.AccessTokenResponse = Utils.Mappers.OAuthMapper.Map(accessTokenResponse); break; case ErrorResponse errorResponse: return(ProcessOAuthClientErrorResponse(errorResponse)); } return(View("Index", oAuthTesterViewModel)); }