使用带有WIF身份验证的jquery中的WCF服务

本文关键字:jquery 中的 WCF 服务 身份验证 WIF | 更新日期: 2023-09-27 18:22:01

我们有一个使用REST的WCF服务。当我们将实现除使用web客户端之外的其他几个客户端时,它将包含所有业务逻辑。

我使用Thinktecture作为STS,因为我们已经有了一个基础设施来识别我们想要重用的旧客户端中的角色。

为了测试一切,我有一个MVC应用程序,它使用jQuery来调用WCF服务。MVC应用程序正确显示声明和身份验证,但我无法使WCF服务重用这些信息。

我已经成功地使MVC通过https和另一个域使用WCF:MVC使用https://localhost:40321,WCF使用https://localhost:40033

我读过这篇文章:如何将(声明)安全令牌传递给启用WIF的WCF服务,但接受的答案使用3.5.NET框架,我们希望使用4.5。

所以我的问题是:

  1. 是否有可能将jQuery与Thinktecture和CORS一起与WIF一起使用?如果是的话,你能给我指正确的方向吗?我读到的所有关于保护WCF的信息似乎都假设您将使用SOAP而不是REST
  2. 如果第1点在jQuery(或javascript)中是不可能的,我应该使用什么身份验证?oAuth 1.0、2.0或其他版本
  3. 正如我在Thinktecture中看到的,您可以指定要返回给JWT的令牌。这是使用身份验证的更好方法吗。如何配置WCF以接受此令牌?如何使用javascript/jQuery提取此令牌?我看到,如果您指定jQuery应该使用"jsonp",它会在请求的头中包含一个cookie

我读过这个http://msdn.microsoft.com/en-us/library/hh446531.aspx但就我所见,这个例子使用的是WEB服务,而不是WCF。

提前谢谢。

使用带有WIF身份验证的jquery中的WCF服务

我读了更多的书,我认为我已经找到了自己问题的答案。

  1. 是否有可能将jQuery与WIF一起使用Thinktecture和CORS?如果是,你能给我指右边吗方向我读到的关于保护WCF的所有信息似乎假设您将使用SOAP而不是REST

不可以。您不能使用jQuery直接访问启用了WIF的WCF。最好创建一个实现REST的WEB.NET api,并将WCF用作该项目中的引用。使用C#代码中的WCF,只需为REST调用添加一个薄层。

  1. 如果第1点在jQuery(或javascript)中是不可能的我应该使用身份验证吗?oAuth 1.0、2.0或其他版本

如果你想使用WIF,我认为最好使用微软的东西来获得更好的兼容性。我并不是说一个比另一个好。

  1. 正如我在Thinktecture中看到的,您可以指定要返回到的令牌JWT。这是使用身份验证的更好方法吗。如何配置WCF接受此令牌?如何提取此令牌javascript/jQuery?我看到,如果您指定jQuery应该使用"jsonp"在请求的头中包含一个cookie

请回答1和2。