C# 确保';通过';网络服务

C# 确保';通过';网络服务,c#,asp.net,web-services,security,C#,Asp.net,Web Services,Security,我目前被分配到一个项目中,该项目涉及为一个将在稍后阶段开发的应用程序实现后端。该应用程序将在第一个(原型)版本(每个SOAP服务提供)中从另一个平台请求敏感(个人)信息。我们将在未来添加更多平台。于是产生了以下想法: APP <---> NEW WEB SERVICE <---> SOAP SERVICE (with the actual data) APP新WEB服务SOAP服务(带实际数据) 我们将新的webservice放在应用程序和SOAP服务之间,因为SOA

我目前被分配到一个项目中,该项目涉及为一个将在稍后阶段开发的应用程序实现后端。该应用程序将在第一个(原型)版本(每个SOAP服务提供)中从另一个平台请求敏感(个人)信息。我们将在未来添加更多平台。于是产生了以下想法:

APP <---> NEW WEB SERVICE <---> SOAP SERVICE (with the actual data)
APP新WEB服务SOAP服务(带实际数据)
我们将新的webservice放在应用程序和SOAP服务之间,因为SOAP服务是由外部方构建的(不是真正的合作)。此外,由于可能发生以下情况,如果我们将有更多来源提供数据:

APP <---> NEW WEB SERVICE <---> SOAP SERVICE (with the actual data)
                          <---> WEB SERVICE #2
                          <---> WEB SERVICE #3
APP新WEB服务SOAP服务(带实际数据)
WEB服务#2
WEB服务#3
由于已经存在一个用户可以登录的web环境,并且我们的经理希望为应用程序和web环境拥有一个帐户,因此用户的身份验证应该始终由SOAP服务完成。这使新web服务中的身份验证和安全性方面变得复杂

问题是,这是否意味着“新web服务”只不过是“传递”或“转发”服务?但是我应该如何保护这个“新web服务”身份验证和SESSION应由现有的SOAP服务处理。

如果“新web服务”提供身份验证等解决方案,则可以使用Oauth或ASP.NET Identity等解决方案。我对这些选项进行了研究,得出结论认为它们不适用于这种情况

我的问题是:如何最大限度地利用此新(转发)web服务的可用安全选项?是否应该添加额外的安全层。

我得出以下结论,不确定这是否是正确的方法:

  • 使用TLS,版本1.2(显然)
  • 为每个用户创建api密钥和密码
  • 使用非对称加密算法加密用户登录详细信息(用户名、密码)

    • 您的问题的简短答案是否。从web服务执行用户级验证会降低整个系统的速度,更重要的是,它不会增加任何价值。您需要做的不是这样做,而是确保Web服务是安全的,未经授权的方不能访问它。要实现这一点,您可以使用证书、WSS、SSL、防火墙等

      让我们假设此Web服务在学校中用于发布考试结果。所以很明显,学生不应该能够访问它。因此,您必须在应用程序级别,而不是在web服务级别进行控制。您当然可以允许学生向WS发送消息,然后WS会回复“您无权这样做”。但它会不必要地消耗你的资源。这也会减慢你的系统


      您提到的第二种情况是有效的。最好有一个中间层,这样您就可以在不改变核心应用程序的情况下满足外部web服务的多个版本。如果外部应用程序不是很可靠,您也可以使用这个中间层优雅地处理可靠性问题。例如,假设外部服务用于
      分类账过账
      。这意味着您的应用程序只会发布一次给定的事务。如果失败了怎么办?您可以在中间层中使用重试机制。因此,同样,如果仔细设计,中间层实际上可以为您的系统增加更多的价值。

      这两个要求听起来矛盾:在新服务中进行身份验证,在soap服务中维护身份验证。现在还不清楚你想要什么。你是在寻求解决这一矛盾的办法吗?或者更确切地说,您知道如何解决这一问题,您只需要为web服务请求身份验证选项?这两种身份验证“类型”不是必需的,我只是想知道这是否是处理此类项目的一种好方法。唯一的要求是使用SOAP进行身份验证,另一个使用新服务的身份验证只是我的想法。我基本上是问其他人在这种情况下会做什么。你能解释一下你对认证的想法吗?我正在研究证书,但不确定这在iOS或Android中的应用程序实现以后会如何工作。客户端证书不应该是静态的,因为它被认为是不安全的?谢谢解释得很好