private async Task StartAuthorization(MobileConnectStatus response) { _state = Guid.NewGuid().ToString("N"); _nonce = Guid.NewGuid().ToString("N"); _discoveryResponse = response.DiscoveryResponse; var newResponse = _mobileConnect.StartAuthorization(_discoveryResponse, response.DiscoveryResponse.ResponseData.subscriber_id, _state, _nonce, new MobileConnectRequestOptions()); await HandleResponse(newResponse); }
private void Complete(string token) { _state = null; _nonce = null; _discoveryResponse = null; accessToken.Text = string.Format("Access Token: {0}", token); loginPanel.Visibility = Visibility.Collapsed; loggedPanel.Visibility = Visibility.Visible; }
private async Task StartAuthentication(MobileConnectStatus response) { _state = Utils.Security.GenerateSecureNonce(); _nonce = Utils.Security.GenerateSecureNonce(); _discoveryResponse = response.DiscoveryResponse; _authOptions = new MobileConnectRequestOptions { Scope = GetScope(), Context = "demo", BindingMessage = "demo auth", // Accept valid results and results indicating validation was skipped due to missing support on the provider AcceptedValidationResults = TokenValidationResult.Valid | TokenValidationResult.IdTokenValidationSkipped, }; var newResponse = _mobileConnect.StartAuthentication(_discoveryResponse, response.DiscoveryResponse.ResponseData.subscriber_id, _state, _nonce, _authOptions); await HandleResponse(newResponse); }
private async Task HandleResponse(MobileConnectStatus response) { System.Diagnostics.Debug.WriteLine(response.ResponseType); if (response.ResponseType == MobileConnectResponseType.OperatorSelection || response.ResponseType == MobileConnectResponseType.Authorization) { web.Navigate(new Uri(response.Url)); } else if (response.ResponseType == MobileConnectResponseType.StartAuthorization) { _discoveryResponse = response.DiscoveryResponse; await StartAuthorization(response); } else if (response.ResponseType == MobileConnectResponseType.Complete) { System.Diagnostics.Debug.WriteLine(response.TokenResponse.ResponseData.AccessToken); Complete(response.TokenResponse.ResponseData.AccessToken); } else if (response.ResponseType == MobileConnectResponseType.Error) { HandleError(response); } }