Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
.net 避免为每个web调用设置客户端凭据_.net_Wcf_Web Services - Fatal编程技术网

.net 避免为每个web调用设置客户端凭据

.net 避免为每个web调用设置客户端凭据,.net,wcf,web-services,.net,Wcf,Web Services,我现在正在使用安全性,我必须在web调用之前设置ClientCredentials 这是一件重复的事情,因为我有很多web调用总是传递相同的东西 什么是一个好的模式来避免这样的事情?好的模式是在授权后将会话令牌从服务发送到客户端,然后在每次调用时发送它,而不是使用凭据。好的模式是在授权后将会话令牌从服务发送到客户端,然后在每次调用时发送它,而不是使用凭据凭据。WCF实现WS-SecureConversation。这允许客户端只传递一次凭据,随后的调用将自动使用客户端和服务之间的安全会话握手生成的

我现在正在使用安全性,我必须在web调用之前设置ClientCredentials

这是一件重复的事情,因为我有很多web调用总是传递相同的东西


什么是一个好的模式来避免这样的事情?

好的模式是在授权后将会话令牌从服务发送到客户端,然后在每次调用时发送它,而不是使用凭据。

好的模式是在授权后将会话令牌从服务发送到客户端,然后在每次调用时发送它,而不是使用凭据凭据。

WCF实现WS-SecureConversation。这允许客户端只传递一次凭据,随后的调用将自动使用客户端和服务之间的安全会话握手生成的安全令牌。在WCF中,这称为安全上下文或安全会话,通常在
wsHttpBinding
中默认打开。使用安全上下文时,必须遵循基本规则:

  • 您的服务将成为每个会话的实例,因此它是长期存在的服务实例,您必须处理与会话过期等相关的所有缺点和问题
  • 安全会话是在单个客户端代理实例和服务实例之间创建的,因此仅当您使用同一个代理时,安全会话才有效。如果创建新代理,则必须再次发送凭据以启动安全对话
  • 由于正在建立安全上下文,对服务的第一次调用速度较慢
如果不遵循这种方法,例如,可以实现自定义SOAP头和消息inspetor,它将在客户端包含头,并在服务器端检查头。此解决方案完全在WCF安全管道之外,不能与WCF中的通用用户名和密码组合。您还必须分别发送用户名和密码

如果您想在WCF管道中包含自定义解决方案,您可能会遇到非常复杂的任务,因为将此类解决方案集成到WCF安全管道需要自定义授权策略、cutom令牌、令牌管理器、令牌身份验证器、令牌解析器和客户端凭据

但据我所知,您不喜欢在每次调用之前设置凭据,这意味着您正在为每次调用使用新的代理。因此,您将编写大量代码,这将导致您不需要为后续调用设置用户名和密码,但您必须设置自定义令牌,该令牌将在服务上进行验证。您还必须在服务上管理这些令牌


可能更容易创建一些用于调用web服务的包装器,这些包装器将设置用户名和密码。

WCF实现WS-SecureConversation。这允许客户端只传递一次凭据,随后的调用将自动使用客户端和服务之间的安全会话握手生成的安全令牌。在WCF中,这称为安全上下文或安全会话,通常在
wsHttpBinding
中默认打开。使用安全上下文时,必须遵循基本规则:

  • 您的服务将成为每个会话的实例,因此它是长期存在的服务实例,您必须处理与会话过期等相关的所有缺点和问题
  • 安全会话是在单个客户端代理实例和服务实例之间创建的,因此仅当您使用同一个代理时,安全会话才有效。如果创建新代理,则必须再次发送凭据以启动安全对话
  • 由于正在建立安全上下文,对服务的第一次调用速度较慢
如果不遵循这种方法,例如,可以实现自定义SOAP头和消息inspetor,它将在客户端包含头,并在服务器端检查头。此解决方案完全在WCF安全管道之外,不能与WCF中的通用用户名和密码组合。您还必须分别发送用户名和密码

如果您想在WCF管道中包含自定义解决方案,您可能会遇到非常复杂的任务,因为将此类解决方案集成到WCF安全管道需要自定义授权策略、cutom令牌、令牌管理器、令牌身份验证器、令牌解析器和客户端凭据

但据我所知,您不喜欢在每次调用之前设置凭据,这意味着您正在为每次调用使用新的代理。因此,您将编写大量代码,这将导致您不需要为后续调用设置用户名和密码,但您必须设置自定义令牌,该令牌将在服务上进行验证。您还必须在服务上管理这些令牌


创建一些用于调用web服务的包装器可能会更容易,这些包装器将设置用户名和密码。

知道一篇文章演示了这一点吗?@zachary我们以非常简单的方式完成了。我们所有的数据契约都是从某个具有该标记的类派生的。再加上将返回该令牌的身份验证操作。为了进一步澄清,通常会有一个登录和注销方法,登录将返回该令牌。知道一篇文章吗?@zachary我们以非常简单的方式做了。我们所有的数据契约都是从某个具有该标记的类派生的。另外,添加将返回该令牌的身份验证操作。为了进一步澄清,通常会有一个登录和注销方法,登录将返回该令牌。