private async void btnLogon_Click(object sender, EventArgs e) { try { IAuthenticationManager authenticationManager = ManagerFactory.GetManager <IAuthenticationManager>(); CommerceAuthenticationParameters commerceParameters = new CommerceAuthenticationParameters(MainForm.CommerceAuthenticationParametersGrantType, MainForm.CommerceAuthenticationParametersClientId); this.UserIdToken = await authenticationManager.AcquireToken(this.textBoxUserName.Text, this.textBoxPassword.Text, commerceParameters); this.mainForm.Log("Logon succeeded."); } catch (Exception ex) { this.mainForm.Log(ex.ToString()); } this.Close(); }
/// <summary> /// Acquires the token. /// </summary> /// <param name="userName">Name of the user.</param> /// <param name="password">The password of the user.</param> /// <param name="commerceAuthenticationParameters">The additional commerce authentication parameters.</param> /// <returns>The user token.</returns> internal override async Task <UserToken> AcquireToken(string userName, string password, CommerceAuthenticationParameters commerceAuthenticationParameters) { ThrowIf.Null(commerceAuthenticationParameters, "commerceAuthenticationParameters"); StringBuilder data = this.CreateAcquireTokenRequest(userName, password, commerceAuthenticationParameters); const string TokenEntityName = "token"; using (var response = await this.SendServerRequest(data, HttpMethod.Post, TokenEntityName, FormUrlEncondedContentType, commerceAuthenticationParameters.RetailOperation.HasValue)) using (var reader = new StreamReader(response.GetResponseStream())) { var result = Newtonsoft.Json.JsonConvert.DeserializeObject <CommerceAuthenticationResult>(reader.ReadToEnd()); return(new UserIdToken(result.IdToken)); } }
/// <summary> /// Creates the acquire token request. /// </summary> /// <param name="userName">Name of the user.</param> /// <param name="password">The password.</param> /// <param name="authenticationParameters">The authentication parameters.</param> /// <returns>The request body.</returns> private StringBuilder CreateAcquireTokenRequest(string userName, string password, CommerceAuthenticationParameters authenticationParameters) { // Create the data to send to token endpoint StringBuilder data = new StringBuilder(); data.Append("username="******"&password="******"&{0}={1}", authenticationParameter.Key, Uri.EscapeDataString(authenticationParameter.Value.ToString()))); } } return(data); }
/// <summary> /// Acquires the user token. /// </summary> /// <param name="userName">Name of the user.</param> /// <param name="password">The password of the user.</param> /// <param name="commerceAuthenticationParameters">The additional commerce authentication parameters.</param> /// <returns>The user token.</returns> internal abstract Task <UserToken> AcquireToken(string userName, string password, CommerceAuthenticationParameters commerceAuthenticationParameters);
/// <summary> /// Acquires a user token. /// </summary> /// <param name="grant_type">The grant type.</param> /// <param name="client_id">The client identifier.</param> /// <param name="username">Name of the user.</param> /// <param name="password">The password of the user.</param> /// <param name="operation_id">The operation identifier.</param> /// <param name="credential">The user's credential.</param> /// <returns>The user token.</returns> /// <remarks>The parameter names must match the server definition, otherwise <see cref="AdaptorCaller"/> will not bind the method.</remarks> public Task <UserToken> Token(string grant_type, string client_id, string username, string password, RetailOperation?operation_id, string credential) { CommerceAuthenticationParameters parameters = new CommerceAuthenticationParameters(grant_type, client_id, operation_id, credential); return(CommerceAuthenticationManager.Value.AcquireToken(username, password, parameters)); }
/// <summary> /// Acquires the user token. /// </summary> /// <param name="userName">Name of the user.</param> /// <param name="password">The password of the user.</param> /// <param name="commerceAuthenticationParameters">The commerce authentication parameters.</param> /// <returns>The user commerce runtime token.</returns> internal override Task <UserToken> AcquireToken(string userName, string password, CommerceAuthenticationParameters commerceAuthenticationParameters) { ThrowIf.Null(commerceAuthenticationParameters, "commerceAuthenticationParameters"); return(Execute <UserToken>(() => { CommerceRuntimeUserToken commerceUserToken; CommerceIdentity originalIdentity = CommerceRuntimeManager.Identity; ConnectionRequest connectionRequest = this.CreateAcquireTokenRequest(userName, password); connectionRequest.Credential = commerceAuthenticationParameters.Credential; connectionRequest.GrantType = commerceAuthenticationParameters.GrantType; connectionRequest.AdditionalAuthenticationData = commerceAuthenticationParameters; LogonCredentials credentials = null; if (!commerceAuthenticationParameters.RetailOperation.HasValue) { try { CommerceIdentity commerceIdentity = new CommerceIdentity(string.Empty, 0, 0, new string[] { }); commerceIdentity.Roles.Add(CommerceRoles.Anonymous); // Set anonymous identity from request. CommerceRuntimeManager.Identity = commerceIdentity; credentials = SecurityManager.Create(CommerceRuntimeManager.Runtime).LogOn(connectionRequest); // Clear the commerce identity. CommerceRuntimeManager.Identity = null; } catch (Exception) { CommerceRuntimeManager.Identity = originalIdentity; throw; } commerceUserToken = new CommerceRuntimeUserToken(credentials.Identity); } else { credentials = SecurityManager.Create(CommerceRuntimeManager.Runtime).ElevateUser(connectionRequest, (RetailOperation)commerceAuthenticationParameters.RetailOperation); commerceUserToken = new CommerceRuntimeUserToken(originalIdentity, credentials.Identity); } return commerceUserToken; })); }