WCF&x2B;Azure=噩梦!
我花了一周的时间试图在Azure上获得一个安全的WCF格式,但都没有用!我的用例非常简单。我想在云中调用WCF端点,并传递要排队等待工作者角色的消息。除此之外,我想限制预授权用户的访问权限,通过用户名和密码进行身份验证 我已经尝试使用Transport、TransportWithMessageCredential和消息安全性来实现这一点,但似乎没有任何效果。事实上,我已经研究了我能找到的每个示例和代码片段,最近的一个例子是页面上的“使用二进制HTTP绑定、传输安全性和消息凭据以及Silverlight客户端的服务”。我很确定我被一些小错误和beta版的改动打倒了,但最终的结果是我完全被卡住了WCF&x2B;Azure=噩梦!,azure,Azure,我花了一周的时间试图在Azure上获得一个安全的WCF格式,但都没有用!我的用例非常简单。我想在云中调用WCF端点,并传递要排队等待工作者角色的消息。除此之外,我想限制预授权用户的访问权限,通过用户名和密码进行身份验证 我已经尝试使用Transport、TransportWithMessageCredential和消息安全性来实现这一点,但似乎没有任何效果。事实上,我已经研究了我能找到的每个示例和代码片段,最近的一个例子是页面上的“使用二进制HTTP绑定、传输安全性和消息凭据以及Silverli
这对我来说是一个关键路径项目,因此任何建议都将不胜感激。一个完整的工作示例或演练会更好 无法回答您的问题本身-但您是否已签出:
我只知道如何处理匿名用户,但也许我的设置会让您帮助您解决这个问题。我知道下面的代码与匿名用户一起工作,也许您可以修改它以使其与身份验证一起工作。此外,保护Web端点的唯一方法是使用传输安全性(源:)通过HTTPS公开它 web.config
<system.serviceModel>
<behaviors>
<serviceBehaviors>
<behavior name="">
<serviceMetadata httpGetEnabled="true" />
<serviceDebug includeExceptionDetailInFaults="true" />
</behavior>
</serviceBehaviors>
</behaviors>
<serviceHostingEnvironment multipleSiteBindingsEnabled="true" aspNetCompatibilityEnabled="true" />
</system.serviceModel>
ExampleService.svc.cs标记
<%@ ServiceHost Language="C#" Debug="true" Service="WebPages.Interfaces.ExampleService" CodeBehind="ExampleService.svc.cs" Factory="System.ServiceModel.Activation.WebServiceHostFactory" %>
来自客户端的jQuery呼叫
function _callServiceInterface(id, delegate) {
var restApiCall = "Interfaces/ExampleService.svc/GetSomething?id="
+ escape(id);
$.getJSON(restApiCall, delegate);
}
function _getSomethingFromService() {
_callServiceInterface('123',
function (result) {
var parsedResult = $.parseJSON(result);
$('#info').html(result.SomethingReturnedFromServiceCall);
}
);
}
老问题,我不完全确定您的解决方案失败在哪里,但据我所知,您需要一个来自公认可信来源的数字证书,而不仅仅是一个私人创建的证书,以使WCF与Azure一起工作
如果你不使用一个,那么据我所知,WCF将失败,但没有真正说明原因。因此,您可以最终追踪一个实际上不存在的代码错误的幽灵 如果你能补充你遇到的具体问题的细节,这将有助于任何回答你的人。现在,这本身不是什么问题。很抱歉,没有提供详细信息!基本上,我希望有一个安全的服务,WinGUI应用程序可以调用该服务将交易和其他相关的“任务”发布到Azure队列。所有的任务都是无状态且幂等的。数十个用户都需要向服务传递凭据,以便进行身份验证和授权。至于安全模式,我更喜欢消息安全,但也可以使用TransportWithMessageCredential安全。除此之外,我对使用.NET服务总线持开放态度,但尚未找到适合我的示例。您是否专门寻找仅使用用户名和密码的WCF呼叫身份验证?首先,这不是gimmecodez网站,因此您应该表明您已经完成了此项工作。实现这一点的最佳方法是展示您的代码。此外,根据标题,你似乎在责怪技术,而不是寻找问题的解决方案。我的建议是在发布问题之前查看常见问题。Aaron,你是否在Azure云上部署了此功能?或者这是一个带有证书的普通vanila WCF安全端点?
namespace WebPages.Interfaces
{
[AspNetCompatibilityRequirements(RequirementsMode = AspNetCompatibilityRequirementsMode.Allowed)]
public class ExampleService : IExample
{
string JsonSerializeSomething(Something something)
{
var serializer = new DataContractJsonSerializer(something.GetType());
var memoryStream = new MemoryStream();
serializer.WriteObject(memoryStream, something);
return Encoding.Default.GetString(memoryStream.ToArray());
}
public string GetSomething(string id)
{
var something = DoSomeBusinessLogic(id);
return JsonSerializeSomething(something);
}
}
}
function _callServiceInterface(id, delegate) {
var restApiCall = "Interfaces/ExampleService.svc/GetSomething?id="
+ escape(id);
$.getJSON(restApiCall, delegate);
}
function _getSomethingFromService() {
_callServiceInterface('123',
function (result) {
var parsedResult = $.parseJSON(result);
$('#info').html(result.SomethingReturnedFromServiceCall);
}
);
}