Example #1
0
        /// <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);