如何解决如何使SOAP API请求需要一些字段?
我制作了WCF服务以制作SOAP API。
我想将这些字段设为必填字段:Username
,Password
,ID
当客户端向API发出请求时,如何使它们成为必填字段?
我想:
- 使它们成为每个API请求所必需的,并且当请求不包含其中一个时,就发送错误。
- 检查它们以查看客户端是否发送了正确的凭据,如果其中之一发送ERROR错误。
例如:
如果它们的值必须是: -
Username
=用户 -
Password
=通过 -
ID
= IdNumber
这是到目前为止的代码:
[OperationContract]
Credentials CheckCredentials(Credentials credentials);
[DataContract]
public class Credentials
{
[DataMember]
public string Username { get; set; }
[DataMember]
public string Password { get; set; }
[DataMember]
public string ID { get; set; }
[DataMember]
public string ErrorResult { get; set; }
}
public Credentials CheckCredentials(Credentials credentialsCheck)
{
if (credentialsCheck.Username == "user" &&
credentialsCheck.Password == "pass" &&
credentialsCheck.ID == "IdNumber")
{
credentialsCheck.ErrorResult = "Correct";
return credentialsCheck;
}
else
{
credentialsCheck.ErrorResult = "Wrong";
return credentialsCheck;
}
}
任何其他建议将不胜感激。
解决方法
WCF中提供了UserName身份验证,这将要求客户端在调用服务时提供用户名和密码,这是一个演示:
创建CustomUserNameValidator类:
public class CustomUserNameValidator : System.IdentityModel.Selectors.UserNamePasswordValidator
{
public override void Validate(string userName,string password)
{
if (null == userName || null == password)
{
throw new ArgumentNullException();
}
if (!(userName == "test1" && password == "test1") && !(userName == "test2" && password == "test2"))
{
throw new FaultException("Unknown Username or Incorrect Password");
}
}
}
在配置文件中添加userNameAuthentication节点:
<userNameAuthentication userNamePasswordValidationMode="Custom" customUserNamePasswordValidatorType="Microsoft.Samples.UserNamePasswordValidator.CalculatorService+CustomUserNameValidator,service"/>
客户端在呼叫时需要提供用户名和密码:
proxy.ClientCredentials.UserName.UserName = "test1";
proxy.ClientCredentials.UserName.Password = "test1";
如果您仍然需要验证ID,则需要考虑使用“自定义令牌”。有关如何创建自定义令牌的信息,您可以参考以下链接:
https://docs.microsoft.com/en-us/dotnet/framework/wcf/extending/how-to-create-a-custom-token
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。