/// <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); }
/// <summary> /// Perform the authentication request /// </summary> /// <returns>The authenticate.</returns> /// <param name="authenticateOptions">Authenticate options.</param> override public Task <User> Authenticate(IAuthenticateOptions authenticateOptions) { AndroidAuthenticateOptions authOptions = (AndroidAuthenticateOptions)NonNull(authenticateOptions, "authenticateOptions"); Activity fromActivity = NonNull(authOptions.FromActvity, "fromActivity"); int resultCode = NonNull(authOptions.ResultCode, "resultCode"); authenticateTaskComplete = new TaskCompletionSource <User>(); authenticateTask = authenticateTaskComplete.Task; AuthorizationServiceConfiguration authorizationServiceConfiguration = GetAuthorizationServiceConfiguration(); authorizationService = GetAuthorizationService(fromActivity); authState = new AuthState(authorizationServiceConfiguration); AuthorizationRequest authorizationRequest = new AuthorizationRequest.Builder(authorizationServiceConfiguration, keycloakConfig.ResourceId, ResponseTypeValues.Code, parseUri(authenticationConfig.RedirectUri)) .SetScopes(authenticationConfig.Scopes) .Build(); Intent authIntent = authorizationService.GetAuthorizationRequestIntent(authorizationRequest); fromActivity.StartActivityForResult(authIntent, resultCode); return(authenticateTask); }
/// <summary> /// Initiate an authentication flow. /// </summary> /// <returns>The authenticate.</returns> /// <param name="authenticateOptions">Authenticate options.</param> public Task <User> Authenticate(IAuthenticateOptions authenticateOptions) { return(Authenticator.Authenticate(authenticateOptions)); }
public abstract Task <User> Authenticate(IAuthenticateOptions authenticateOptions);