Beispiel #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);
        }
Beispiel #2
0
 public void SetAuthorizationFlowSession(IAuthorizationFlowSession session)
 {
     ((IIOSApp)UIApplication.SharedApplication.Delegate).SetAuthorizationFlowSession(session);
 }