WCF身份验证密码怎么放到web.config里面?
1个回答
展开全部
创建 WSHttpBinding 类的一个实例。
将 WSHttpSecurity 类的 Mode 属性设置为 Message。可以通过 WSHttpBinding 类的 Security 属性来访问 WSHttpSecurity 对象。
将 MessageSecurityOverHttp 类的 ClientCredentialType 属性设置为 UserName。可以通过 WSHttpSecurity 类的 Message 属性来访问MessageSecurityOverHttp,如下面的代码所示。
C#
VB
WSHttpBinding myBinding = new WSHttpBinding();
myBinding.Security.Mode = SecurityMode.Message;
myBinding.Security.Message.ClientCredentialType =
MessageCredentialType.UserName;
配置服务以便在配置中使用用户名和密码进行身份验证
将 wsHttpBinding Element添加到 Web.config 文件的 <bindings> 节。
将 binding 元素添加到 wsHttpBinding 元素,并根据需要将 configurationName 属性设置为适当的值。
向绑定添加一个 <security> for <wsHttpBinding> 元素,并将 mode 属性设置为 "Message"。
向 security 绑定添加一个 <message> for <security> for <wsHttpBinding>,并将 clientCredentialType 属性设置为 "UserName",如下面的代码所示:
<system.serviceModel>
<bindings>
<wsHttpBinding>
<binding name="Binding1">
<security mode="Message">
<message clientCredentialType="UserName"/>
</security>
</binding>
</wsHttpBinding>
</bindings>
</system.serviceModel>
创建一个使用新绑定的服务,如下面的代码所示。
<services>
<service
type="Microsoft.ServiceModel.Samples.CalculatorService"
behaviorConfiguration="CalculatorServiceBehavior">
<!-- Use the base address provided by the host. -->
<endpoint address=""
binding="wsHttpBinding"
bindingConfiguration="Binding1"
contract="Microsoft.ServiceModel.Samples.ICalculator" />
</service>
</services>
客户端代码
在代码中获取用户的用户名和密码
若要获取用户的用户名和密码,您必须使用用户界面。下面的代码使用命令提示来查询用户的用户名和密码。用星号替换用户输入。
C#
VB
public static string Returnpassword()
{
Console.WriteLine("Provide a valid machine or domain account. [domain\\user]");
Console.WriteLine(" Enter username:");
string username = Console.ReadLine();
Console.WriteLine(" Enter password:");
string password = "";
ConsoleKeyInfo info = Console.ReadKey(true);
while (info.Key != ConsoleKey.Enter)
{
if (info.Key != ConsoleKey.Backspace)
{
password += info.KeyChar;
info = Console.ReadKey(true);
}
else if (info.Key == ConsoleKey.Backspace)
{
if (!string.IsNullOrEmpty(password))
{
password = password.Substring
(0, password.Length - 1);
}
info = Console.ReadKey(true);
}
}
for (int i = 0; i < password.Length; i++)
Console.Write("*");
return password;
}
创建客户端类的实例,如下面的代码所示。
C#
VB
CalculatorClient client = new CalculatorClient("default");
将 UserNamePasswordClientCredential 类的 Password 属性设置为密码。可以从客户端对象访问此类,如下面的代码所示。
C#
VB
client.ClientCredentials.UserName.Password = ReturnPassword();
将 UserName 属性设置为用户的用户名。
C#
VB
client.ClientCredentials.UserName.UserName = ReturnUsername();
调用服务的方法。
C#
VB
double value1 = client.Add(100, 15.99);
完成后,请调用客户端的 Close 方法。
C#
VB
client.Close();
将 WSHttpSecurity 类的 Mode 属性设置为 Message。可以通过 WSHttpBinding 类的 Security 属性来访问 WSHttpSecurity 对象。
将 MessageSecurityOverHttp 类的 ClientCredentialType 属性设置为 UserName。可以通过 WSHttpSecurity 类的 Message 属性来访问MessageSecurityOverHttp,如下面的代码所示。
C#
VB
WSHttpBinding myBinding = new WSHttpBinding();
myBinding.Security.Mode = SecurityMode.Message;
myBinding.Security.Message.ClientCredentialType =
MessageCredentialType.UserName;
配置服务以便在配置中使用用户名和密码进行身份验证
将 wsHttpBinding Element添加到 Web.config 文件的 <bindings> 节。
将 binding 元素添加到 wsHttpBinding 元素,并根据需要将 configurationName 属性设置为适当的值。
向绑定添加一个 <security> for <wsHttpBinding> 元素,并将 mode 属性设置为 "Message"。
向 security 绑定添加一个 <message> for <security> for <wsHttpBinding>,并将 clientCredentialType 属性设置为 "UserName",如下面的代码所示:
<system.serviceModel>
<bindings>
<wsHttpBinding>
<binding name="Binding1">
<security mode="Message">
<message clientCredentialType="UserName"/>
</security>
</binding>
</wsHttpBinding>
</bindings>
</system.serviceModel>
创建一个使用新绑定的服务,如下面的代码所示。
<services>
<service
type="Microsoft.ServiceModel.Samples.CalculatorService"
behaviorConfiguration="CalculatorServiceBehavior">
<!-- Use the base address provided by the host. -->
<endpoint address=""
binding="wsHttpBinding"
bindingConfiguration="Binding1"
contract="Microsoft.ServiceModel.Samples.ICalculator" />
</service>
</services>
客户端代码
在代码中获取用户的用户名和密码
若要获取用户的用户名和密码,您必须使用用户界面。下面的代码使用命令提示来查询用户的用户名和密码。用星号替换用户输入。
C#
VB
public static string Returnpassword()
{
Console.WriteLine("Provide a valid machine or domain account. [domain\\user]");
Console.WriteLine(" Enter username:");
string username = Console.ReadLine();
Console.WriteLine(" Enter password:");
string password = "";
ConsoleKeyInfo info = Console.ReadKey(true);
while (info.Key != ConsoleKey.Enter)
{
if (info.Key != ConsoleKey.Backspace)
{
password += info.KeyChar;
info = Console.ReadKey(true);
}
else if (info.Key == ConsoleKey.Backspace)
{
if (!string.IsNullOrEmpty(password))
{
password = password.Substring
(0, password.Length - 1);
}
info = Console.ReadKey(true);
}
}
for (int i = 0; i < password.Length; i++)
Console.Write("*");
return password;
}
创建客户端类的实例,如下面的代码所示。
C#
VB
CalculatorClient client = new CalculatorClient("default");
将 UserNamePasswordClientCredential 类的 Password 属性设置为密码。可以从客户端对象访问此类,如下面的代码所示。
C#
VB
client.ClientCredentials.UserName.Password = ReturnPassword();
将 UserName 属性设置为用户的用户名。
C#
VB
client.ClientCredentials.UserName.UserName = ReturnUsername();
调用服务的方法。
C#
VB
double value1 = client.Add(100, 15.99);
完成后,请调用客户端的 Close 方法。
C#
VB
client.Close();
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询