Loading [MathJax]/jax/output/CommonHTML/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >如何让我的WCF客户端加密我的请求的SOAP正文?

如何让我的WCF客户端加密我的请求的SOAP正文?
EN

Stack Overflow用户
提问于 2012-05-31 09:53:09
回答 2查看 4.2K关注 0票数 2

如何签名和加密我的WCF客户端服务调用(来自规范:所有消息都应根据WS-Security X.509令牌配置文件进行签名和加密。该规范可以在here中找到)。

我必须使用SOAP1.1和WS-Security,该服务是由第三方提供的,我非常确定他们是使用Java (IBM )(而不是WCf )编写的。

我已经尝试了以下方法,但我认为这是提出错误问题的情况,因为我读到的大多数内容都表明,客户端不会决定加密的内容,这是由服务保护级别(SignAndEncrypt)定义的。我还看到了应该用来加密的X509SecurityToken的引用,但我认为这是较旧的.net。

不管怎样,这就是我到目前为止所知道的:

代码语言:javascript
运行
AI代码解释
复制
' Create the binding.
Dim myBinding As New BasicHttpBinding() ' FOR SOAP 1.1
myBinding.Security.Mode = BasicHttpSecurityMode.TransportWithMessageCredential
myBinding.Security.Message.ClientCredentialType = BasicHttpMessageCredentialType.Certificate
myBinding.Security.Transport.ClientCredentialType = HttpClientCredentialType.Certificate

' Create the endpoint address. 
Dim ea As New EndpointAddress("https://removed")

' Create the client. 
Dim starClientProxy As New wcfStarServiceProxy.starTransportPortTypesClient(myBinding, ea)

' Specify a certificate to use for authenticating the client.
starClientProxy.ClientCredentials.ClientCertificate.SetCertificate(StoreLocation.CurrentUser, StoreName.My, X509FindType.FindBySubjectName, "removed")

'Cert used for encryption
starClientProxy.ClientCredentials.ServiceCertificate.SetDefaultCertificate(StoreLocation.CurrentUser, StoreName.AddressBook, X509FindType.FindBySubjectName, "removed")

所以现在它应该自动加密它吗?我找不到需要设置的任何内容

代码语言:javascript
运行
AI代码解释
复制
'call the service    
Dim response As wcfStarServiceProxy.AcknowledgeRepairOrderPayload = starClientProxy.ProcessMessage(payload)

所以,我想我已经成功地对请求进行了签名,但是,主体并没有加密。如何对正文进行加密?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-05-31 15:08:00

@Dejan给了我一个答案:

代码语言:javascript
运行
AI代码解释
复制
Private Function GetCustomBinding2() As Channels.Binding

    Dim httpsBindingElement As New HttpsTransportBindingElement()
    httpsBindingElement.AllowCookies = False
    httpsBindingElement.BypassProxyOnLocal = False
    httpsBindingElement.HostNameComparisonMode = HostNameComparisonMode.StrongWildcard
    httpsBindingElement.MaxBufferPoolSize = 524288
    httpsBindingElement.MaxBufferSize = 65536
    httpsBindingElement.MaxReceivedMessageSize = 65536
    httpsBindingElement.RequireClientCertificate = True
    httpsBindingElement.UseDefaultWebProxy = True



    Dim asbe As New Channels.AsymmetricSecurityBindingElement
    asbe.MessageSecurityVersion = MessageSecurityVersion.WSSecurity11WSTrustFebruary2005WSSecureConversationFebruary2005WSSecurityPolicy11
    asbe.InitiatorTokenParameters = New ServiceModel.Security.Tokens.X509SecurityTokenParameters
    asbe.RecipientTokenParameters = New ServiceModel.Security.Tokens.X509SecurityTokenParameters
    asbe.SecurityHeaderLayout = SecurityHeaderLayout.Strict
    asbe.DefaultAlgorithmSuite = Security.SecurityAlgorithmSuite.Basic128Sha256
    asbe.IncludeTimestamp = True
    asbe.SetKeyDerivation(False)
    'asbe.OnlySignEntireHeadersAndBody = True

    'asbe.EndpointSupportingTokenParameters.SignedEncrypted.Add(New ServiceModel.Security.Tokens.X509SecurityTokenParameters)
    'asbe.EndpointSupportingTokenParameters.SetKeyDerivation(False)

    Dim myBinding As New CustomBinding

    myBinding.Elements.Add(asbe)

    myBinding.Elements.Add(New TextMessageEncodingBindingElement(MessageVersion.Soap11, System.Text.Encoding.UTF8))
    'myBinding3.Elements.Add(New HttpsTransportBindingElement())
    myBinding.Elements.Add(httpsBindingElement)



    Return myBinding
End Function
票数 1
EN

Stack Overflow用户

发布于 2012-05-31 12:21:10

我已经创建了一个自定义绑定来实现两个级别的安全-证书和用户名-密码。我是这样做的(代码摘录):

代码语言:javascript
运行
AI代码解释
复制
        CustomBinding customBinding = new CustomBinding();
        // ...
        HttpsTransportBindingElement httpsBindingElement = new HttpsTransportBindingElement();
        httpsBindingElement.AllowCookies = false;
        httpsBindingElement.BypassProxyOnLocal = false;
        httpsBindingElement.HostNameComparisonMode = HostNameComparisonMode.StrongWildcard;
        httpsBindingElement.MaxBufferPoolSize = 20480000;
        httpsBindingElement.MaxBufferSize = 20480000;
        httpsBindingElement.MaxReceivedMessageSize = 20480000;
        httpsBindingElement.RequireClientCertificate = true;
        httpsBindingElement.UseDefaultWebProxy = true;
        TransportSecurityBindingElement transportSecurityElement = new TransportSecurityBindingElement();
        transportSecurityElement.EndpointSupportingTokenParameters.SignedEncrypted.Add(new UserNameSecurityTokenParameters());
        transportSecurityElement.EndpointSupportingTokenParameters.SetKeyDerivation(false);
        // ...
        customBinding.Elements.Add(transportSecurityElement);
        customBinding.Elements.Add(httpsBindingElement);

通过这种方式,客户端使用用户名和密码对消息进行签名和加密,但是您可以修改此示例并完成所需的操作。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10831264

复制
相关文章
用户登录界面[通俗易懂]
发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/166531.html原文链接:https://javaforall.cn
全栈程序员站长
2022/09/20
3.4K0
用户登录界面[通俗易懂]
CSS——用户界面
用户界面(User Interface)属性是一些与用户界面特性相关的CSS属性。
Html5知典
2019/11/26
7390
好的用户界面-界面设计的一些技巧
如此有用的文章我已记不得是什么时候发现的了,但在看完的那一刻便想将之翻译,分享给大家自己也受用。
lyb-geek
2019/08/12
7810
好的用户界面-界面设计的一些技巧
图形用户界面入门
EasyGUI 是 Python 中一个非常简单的 GUI 编程模块,不同于其他的 GUI 生成器,它不是事件驱动的。相反,所有的 GUI 交互都是通过简地函数调用就可以实现。
清菡
2020/12/02
9500
图形用户界面入门
[javaSE] GUI(图形用户界面)
调用Frame对象的setSize()方法,设置尺寸,参数:int的宽度,int的高度
唯一Chat
2019/09/10
9120
[javaSE] GUI(图形用户界面)
模拟用户登录界面
上网过程中,我们常常会有一个账号的登录过程,本篇博客通过模拟用户登录界面以及登录过程过多时,引发的账号锁定现象。形象地变现出用户登录的详细过程。
算法与编程之美
2021/12/21
3.4K0
用户界面开发基础
Activity是Android中最核心的应用程序组件,也是大多数程序必须使用的用于显示界面的组件。
小小工匠
2021/08/16
1.8K0
CSS用户界面样式
所谓的界面样式, 就是更改一些用户操作样式, 比如 更改用户的鼠标样式, 表单轮廓以及 防止表单域拖拽等。但是比如滚动条的样式改动受到了很多浏览器的抵制,因此我们就放弃了。
星辰_大海
2020/09/30
1.9K0
后台管理系统界面_用户界面管理系统
3. FreshUI – Premium Web App and Admin Template
全栈程序员站长
2022/10/01
4.5K0
后台管理系统界面_用户界面管理系统
Android用户界面开发概述
相信通过前面15期的学习,Android的开发环境已经基本掌握了,如果仍有问题,欢迎到Android零基础入门技术讨论微信群交流,从本期开始正式来一步一步踏入Android开发之路。 Android应用开发的一项内容就是用户界面的开发。Android提供了非常丰富的用户界面组件,借助于这些用户界面组件,开发者可以非常方便地进行用户界面开发,而且可以开发出非常优秀的用户界面。 一、界面UI元素介绍 Android应用是运行于手机系统上的程序,这种程序给用户的第一印象就是用户界面。接下
分享达人秀
2018/02/02
2.5K0
Android用户界面开发概述
Elasticsearch Cerebro 用户界面介绍
Cerebro 是查看分片分配和最有用的界面之一通过图形界面执行常见的索引操作。 完全开放源,并且它允许您添加用户,密码或 LDAP 身份验证问网络界面。Cerebro 是对先前插件的部分重写,并且可以作为自运行工具使用应用程序服务器,基于 Scala 的Play 框架。
HLee
2020/12/29
1K0
Elasticsearch Cerebro 用户界面介绍
Elasticsearch: Cerebro 用户界面介绍
Cerebro 是以前的 Elasticsearch 插件 Elasticsearch Kopf 的演变(https://github.com/lmenezes/elasticsearch- kopf) – 这不适用于 Elasticsearch 版本5.x或更高版本,这是由于删除了 site plugins。
腾讯云大数据
2020/11/11
3.8K0
Elasticsearch: Cerebro 用户界面介绍
odoo 开发入门教程系列-一些用户界面
上一章,我们通过CSV文件添加了数据。当需要添加数据格式简单时,用CSV格式还是很方便的,当数据格式更复杂时(比如视图架构或者一个邮件模板),我们使用XML格式。比如包含HTML tags的 help field。虽然可以通过CSV文件加载这样的数据,但是使用XML更方便。
授客
2023/03/26
3.1K0
odoo 开发入门教程系列-一些用户界面
Pro/ENGINEER Wildfire 4.0的用户界面
Pro/ENGINEER Wildfire 4.0菜单栏位于标题栏的下面。系统将控制命令按性质分类放置于各个菜单中。
枫桦
2022/08/02
6410
Pro/ENGINEER Wildfire 4.0的用户界面
python图形用户界面(一):创建第一个GUI图形用户界面
本系列课程是针对无基础的,争取用简单明了的语言来讲解,学习前需要具备基本的电脑操作能力,准备一个已安装python环境的电脑。如果觉得好可以分享转发,有问题的地方也欢迎指出,在此先行谢过。
叶子陪你玩
2020/03/19
1.7K0
python图形用户界面(一):创建第一个GUI图形用户界面
python图形用户界面(二):如何给GUI界面添加一个按钮?
本系列课程是针对无基础的,争取用简单明了的语言来讲解,学习前需要具备基本的电脑操作能力,准备一个已安装python环境的电脑。如果觉得好可以分享转发,有问题的地方也欢迎指出,在此先行谢过。
叶子陪你玩
2020/03/23
2.3K0
python图形用户界面(二):如何给GUI界面添加一个按钮?
python图形用户界面(三):如何简单高效地实现GUI界面设计??
本系列课程是针对无基础的,争取用简单明了的语言来讲解,学习前需要具备基本的电脑操作能力,准备一个已安装python环境的电脑。如果觉得好可以分享转发,有问题的地方也欢迎指出,在此先行谢过。
叶子陪你玩
2020/03/25
2.8K0
图形用户界面和游戏开发
GUI是图形用户界面的缩写,图形化的用户界面对使用过计算机的人来说应该都不陌生,在此也无需进行赘述。Python默认的GUI开发模块是tkinter(在Python 3以前的版本中名为Tkinter),从这个名字就可以看出它是基于Tk的,Tk是一个工具包,最初是为Tcl设计的,后来被移植到很多其他的脚本语言中,它提供了跨平台的GUI控件。当然Tk并不是最新和最好的选择,也没有功能特别强大的GUI控件,事实上,开发GUI应用并不是Python最擅长的工作,如果真的需要使用Python开发GUI应用,wxPython、PyQt、PyGTK等模块都是不错的选择。
用户8442333
2021/05/19
1.8K0
「R」Shiny:用户界面(三)布局
在我们知道如何创建一系列输入和输出控件之后,我们需要学会如何在一个页面中对它们进行排列,以达到比较好的展示效果。这正是布局函数的工作,布局函数提供了一个应用高层次的可视化结构。
王诗翔呀
2020/07/06
3.8K0
「R」Shiny:用户界面(三)布局
操作系统的用户界面
操作系统的用户界面(或称接口) 是操作系统提供给用户与计算机打交道的外部机制。用户能够借助这种机制和系统提供的手段来控制用户所在的系统。
岳泽以
2022/10/26
1.8K0
操作系统的用户界面

相似问题

渐近符号

24

渐近符号性质-证明?

13

如何证明渐近符号

20

如何将渐近函数替换为渐近符号?

18

渐近符号图的解释

12
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档