in apps/samplecode/automotive/apisamples/Microsoft.Dynamics.Automotive.Samples/helpercode/CrmServiceHelpers.cs [555:684]
public static ClientCredentials GetUserLogonCredentials(ServerConnection.Configuration config)
{
ClientCredentials credentials = new ClientCredentials();
String userName;
SecureString password;
String domain;
Boolean isCredentialExist = (config.Credentials != null) ? true : false;
switch (config.EndpointType)
{
// An on-premises Microsoft Dynamics CRM server deployment.
case AuthenticationProviderType.ActiveDirectory:
// Uses credentials from windows credential manager for earlier saved configuration.
if (isCredentialExist && !String.IsNullOrWhiteSpace(config.OrganizationName))
{
domain = config.Credentials.Windows.ClientCredential.Domain;
userName = config.Credentials.Windows.ClientCredential.UserName;
if (String.IsNullOrWhiteSpace(config.Credentials.Windows.ClientCredential.Password))
{
Console.Write("\nEnter domain\\username: ");
Console.WriteLine(
config.Credentials.Windows.ClientCredential.Domain + "\\"
+ config.Credentials.Windows.ClientCredential.UserName);
Console.Write(" Enter Password: ");
password = ReadPassword();
}
else
{
password = config.Credentials.Windows.ClientCredential.SecurePassword;
}
}
// Uses default credentials saved in windows credential manager for current organization.
else if (!isCredentialExist && !String.IsNullOrWhiteSpace(config.OrganizationName))
{
return null;
}
// Prompts users to enter credential for current organization.
else
{
String[] domainAndUserName;
do
{
Console.Write("\nEnter domain\\username: ");
domainAndUserName = Console.ReadLine().Split('\\');
// If user do not choose to enter user name,
// then try to use default credential from windows credential manager.
if (domainAndUserName.Length == 1 && String.IsNullOrWhiteSpace(domainAndUserName[0]))
{
return null;
}
}
while (domainAndUserName.Length != 2 || String.IsNullOrWhiteSpace(domainAndUserName[0])
|| String.IsNullOrWhiteSpace(domainAndUserName[1]));
domain = domainAndUserName[0];
userName = domainAndUserName[1];
Console.Write(" Enter Password: ");
password = ReadPassword();
}
if (null != password)
{
credentials.Windows.ClientCredential =
new System.Net.NetworkCredential(userName, password, domain);
}
else
{
credentials.Windows.ClientCredential = null;
}
break;
// A Microsoft Dynamics CRM Online server deployment.
case AuthenticationProviderType.LiveId:
// An internet-facing deployment (IFD) of Microsoft Dynamics CRM.
case AuthenticationProviderType.Federation:
// Managed Identity/Federated Identity users using Microsoft Office 365.
case AuthenticationProviderType.OnlineFederation:
// Use saved credentials.
if (isCredentialExist)
{
userName = config.Credentials.UserName.UserName;
if (String.IsNullOrWhiteSpace(config.Credentials.UserName.Password))
{
Console.Write("\n Enter Username: ");
Console.WriteLine(config.Credentials.UserName.UserName);
Console.Write(" Enter Password: ");
password = ReadPassword();
}
else
{
password = ConvertToSecureString(config.Credentials.UserName.Password);
}
}
// For OnlineFederation environments, initially try to authenticate with the current UserPrincipalName
// for single sign-on scenario.
else if (config.EndpointType == AuthenticationProviderType.OnlineFederation
&& config.AuthFailureCount == 0
&& !String.IsNullOrWhiteSpace(UserPrincipal.Current.UserPrincipalName))
{
config.UserPrincipalName = UserPrincipal.Current.UserPrincipalName;
return null;
}
// Otherwise request username and password.
else
{
config.UserPrincipalName = String.Empty;
if (config.EndpointType == AuthenticationProviderType.LiveId)
Console.Write("\n Enter Microsoft account: ");
else
Console.Write("\n Enter Username: ");
userName = Console.ReadLine();
if (string.IsNullOrWhiteSpace(userName))
{
return null;
}
Console.Write(" Enter Password: ");
password = ReadPassword();
}
credentials.UserName.UserName = userName;
credentials.UserName.Password = ConvertToUnsecureString(password);
break;
default:
credentials = null;
break;
}
return credentials;
}