如何检查 ASP.NET MVC 用户是否已通过单独的 WCF 服务应用程序进行身份验证和授权?

How to check an ASP.NET MVC user is authenticated and authorized from a separate WCF service application?

我有两个项目:

  1. 使用 ASP.NET Identity 2.2
  2. 的 ASP.NET MVC 5.2 应用程序
  3. WCF 应用程序 SOAP XML 服务。

注意:WCF 服务不是由 ASP.NET 托管的,也不是 ASP.NET 兼容模式下的 运行。该项目的一个要求是它是基于接口的,ASP.NET 兼容模式似乎不允许基于接口的实现。

当用户发出特定操作请求时,ASP.NET MVC 应用程序调用 WCF SOAP XML 服务服务器端。但是,WCF 服务是通过 public Internet 访问的,因此从理论上讲,如果知道地址,任何人都可以调用它。我需要确保只有 ASP.NET 身份注册的管理员角色用户才能调用它。 WCF 应用程序可以直接访问数据库,但它似乎不是最佳解决方案?

如何从 WCF 服务检查用户是否在 ASP.NET MVC 5.2 中使用 ASP.NET Identity 2.2 使用对象传递进行身份验证和授权?应该传递和检查哪些对象或属性?还有其他解决办法吗?是否可以使用 wcf 中的属性检查 authentication/authorization?

你拥有这两个吗,它们在同一个域中吗?

您可以在后台与数据库交互以生成身份验证令牌,然后让 wcf 服务将带有令牌的 url 传递回用户。当用户通过令牌化 url 访问该站点时,它会从 ASP 应用程序的角度检查数据库并进行身份验证。它有点不对称,但它可以处理您的用例而不会受到域限制。