/// <summary> /// Perform the authentication request /// </summary> /// <returns>The authenticate.</returns> /// <param name="authenticateOptions">Authenticate options.</param> override public Task <User> Authenticate(IAuthenticateOptions authenticateOptions) { IOSAuthenticateOptions options = NonNull((IOSAuthenticateOptions)authenticateOptions, "authenticateOptions"); ServiceConfiguration oidServiceConfiguration = new ServiceConfiguration(this.keycloakConfig.AuthenticationEndpoint, this.keycloakConfig.TokenEndpoint); // = GetAuthorizationServiceConfiguration(); AuthorizationRequest oidAuthRequest = new AuthorizationRequest(oidServiceConfiguration, this.keycloakConfig.ResourceId, new String[] { Scope.OpenId, Scope.Profile }, this.authenticationConfig.RedirectUri, ResponseType.Code, null); authenticateTaskComplete = new TaskCompletionSource <User>(); authenticateTask = authenticateTaskComplete.Task; this.currentAuthorizationFlow = startAuthorizationFlow(oidAuthRequest, options.PresentingViewController, (OIDCCredential credential, NSError error) => { if (credential != null) { credentialManager.Store(credential); var user = User.NewUser().FromUnverifiedCredential(credential, this.keycloakConfig.ResourceId); authenticateTaskComplete.TrySetResult(user); } else { authenticateTaskComplete.TrySetException(new Exception(error.LocalizedDescription)); } }); return(authenticateTask); }
public void SetAuthorizationFlowSession(IAuthorizationFlowSession session) { ((IIOSApp)UIApplication.SharedApplication.Delegate).SetAuthorizationFlowSession(session); }