in apps/samplecode/automotive/apisamples/Microsoft.Dynamics.Automotive.Samples/helpercode/CrmServiceHelpers.cs [1140:1213]
private XElement ParseOutCredentials(ClientCredentials clientCredentials,
AuthenticationProviderType endpointType, String target)
{
if (clientCredentials != null)
{
Credential cred = CredentialManager.ReadCredentials(target);
switch (endpointType)
{
case AuthenticationProviderType.ActiveDirectory:
if (cred == null)
{
// Add entry in windows credential manager for future use.
if (!String.IsNullOrWhiteSpace(clientCredentials.Windows.ClientCredential.Password))
{
CredentialManager.WriteCredentials(target,
new Credential(clientCredentials.Windows.ClientCredential.Domain + "\\"
+ clientCredentials.Windows.ClientCredential.UserName,
clientCredentials.Windows.ClientCredential.Password),
true);
}
}
else
{
// Replace if the password has been changed.
if (!clientCredentials.Windows.ClientCredential.Password.Equals(cred.Password))
{
CredentialManager.DeleteCredentials(target, false);
CredentialManager.WriteCredentials(target,
new Credential(clientCredentials.Windows.ClientCredential.Domain + "\\"
+ clientCredentials.Windows.ClientCredential.UserName,
clientCredentials.Windows.ClientCredential.Password),
true);
}
}
return new XElement("Credentials",
new XElement("UserName", clientCredentials.Windows.ClientCredential.UserName),
new XElement("Domain", clientCredentials.Windows.ClientCredential.Domain)
);
case AuthenticationProviderType.LiveId:
case AuthenticationProviderType.Federation:
case AuthenticationProviderType.OnlineFederation:
if (cred == null)
{
// Add entry in windows credential manager for future use.
if (!String.IsNullOrWhiteSpace(clientCredentials.UserName.Password))
{
CredentialManager.WriteCredentials(target,
new Credential(clientCredentials.UserName.UserName,
clientCredentials.UserName.Password),
true);
}
}
else
{
// Replace if the password has been changed.
if (!clientCredentials.UserName.Password.Equals(cred.Password))
{
CredentialManager.DeleteCredentials(target, false);
CredentialManager.WriteCredentials(target,
new Credential(clientCredentials.UserName.UserName,
clientCredentials.UserName.Password),
true);
}
}
return new XElement("Credentials",
new XElement("UserName", clientCredentials.UserName.UserName)
);
default:
break;
}
}
return new XElement("Credentials", "");
}