- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我将 WIF 与 STS 结合使用。一切正常,客户端通过在凭据中发送用户名/密码进行身份验证。
我们在客户现场安装客户端。我希望每个客户都为其客户使用自己的证书。原因是没有可能的“客户站点”验证。我可以停用一些用户帐户,但我不能一次禁用客户安装的所有客户端。
如果每个客户都有不同的证书,我可以撤销该证书,并且该客户的任何客户端都无法再连接。
我找不到任何方法来强制客户端将其证书设置为通信。通常,当身份验证模式设置为 certificate 时,这是自动的,但我需要将其设置为 windows 才能发送身份验证。
有人知道如何实现吗?或者让我知道这是否不可能。
干杯。
最佳答案
当然,您只需要做一些步法就可以开始使用自定义安全绑定(bind)扩展元素来描述 token 以及应该使用哪个 token 进行签名/背书。出于解释的目的,我假设您总是希望同时传递证书和用户名/密码。
在自定义绑定(bind)元素中,您需要创建一个 TransportSecurityBindingElement
并向其添加 token 参数。可以向三个集合添加 token 参数:SignedEncrypted
、Signed
和 Endorsing
。对于我们在这里讨论的场景,我建议添加 UserNameSecurityTokenParameters
到 SignedEncrypted
集合和 X509SSecurityTokenParameters
到 Endorsing
集合。这意味着消息有效性/完整性由证书 token 而不是用户名/密码提供,并且用户名/密码 token 将由证书 token 签名并加密。这将类似于以下内容:
public class MySecurityBindingElement : BindingElementExtensionElement
{
public override void ApplyConfiguration(BindingElement bindingElement)
{
base.ApplyConfiguration(bindingElement);
TransportSecurityBindingElement transportSecurityBindingElement = (TransportSecurityBindingElement)bindingElement;
transportSecurityBindingElement.EndpointSupportingTokenParameters.SignedEncrypted.Add(new UserNameSecurityTokenParameters());
transportSecurityBindingElement.EndpointSupportingTokenParameters.Endorsing.Add(new X509SecurityTokenParameters
{
InclusionMode = SecurityTokenInclusionMode.AlwaysToRecipient,
ReferenceStyle = SecurityTokenReferenceStyle.Internal,
RequireDerivedKeys = false,
X509ReferenceStyle = X509KeyIdentifierClauseType.Any
});
}
protected override BindingElement CreateBindingElement()
{
TransportSecurityBindingElement result = new TransportSecurityBindingElement
{
IncludeTimestamp = true,
LocalClientSettings.DetectReplays = false,
LocalServiceSettings.DetectReplays = false
};
this.ApplyConfiguration(result);
return result;
}
}
然后,从客户端的角度来看,您只需确保为用于与服务器通信的每个 channel 设置证书和用户名密码。您可以在运行时通过设置 the Credentials
property 上的属性来执行此操作ChannelFactory
或标准 WCF,ClientBase
proxy类(class)。您可以做的另一件事是通过端点行为设置客户端证书,如下所示:
<endpointBehavior>
<behavior name="MyBehavior">
<clientCredentials>
<clientCertificate findValue="MySubject" x509FindType="FindBySubjectName" storeLocation="LocalMachine" storeName="My" />
</clientCredentials>
</behavior>
</endpointBehavior>
通过这种方式,您只需要在运行时显式设置用户名/密码。
最后,在 STS 中,您可以通过 OperationContext::SupportingTokens
读取用户指定的 token 。属性(property)。你会发现 UserNameSecurityToken
的实例和 X509SecurityToken
在集合中,您可以从那里使用它们来验证调用者。
关于wcf - 可以使用带有用户名/密码和客户端证书的 WCF STS 吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6111754/
关闭。这个问题不符合Stack Overflow guidelines .它目前不接受答案。 我们不允许提问寻求书籍、工具、软件库等的推荐。您可以编辑问题,以便用事实和引用来回答。 关闭 8 年前。
我正在使用 Spring Source Toolsuite IDE 处理 Struts 项目。 当出现编译器错误或其他问题时,我的项目图标上方会出现红色 X 标记或黄色感叹号。 但即使在我确定没有编译
我用的是 AWSSecurityTokenServiceClient sts_client = new AWSSecurityTokenServiceClient(), 并且自动设置默认区域(全局)。
我用的是 AWSSecurityTokenServiceClient sts_client = new AWSSecurityTokenServiceClient(), 并且自动设置默认区域(全局)。
在较新版本的STS 3.6.0及更高版本中,不再有关闭Spring Dashboard的选项,现在有人知道如何实现这一点吗? 最佳答案 您是否尝试过仅关闭仪表板,然后在重新启动 STS 时查看它是否保
我正在使用最新版本的 SpringSource Tool Suite (STS)。我已经建立了一个Java项目。我的代码有一个打包 WAR 的 Ant 构建文件。我在 Mac 10.6.3 上本地安装
这是我的文件“sts.ini”,我进行了配置,但它仍然运行得很慢。谁能帮帮我? --launcher.XXMaxPermSize 4096M -vmargs -Dosgi.requiredJavaVe
我已在 Mac (10.12.1) 上下载并安装了 STS 3.8.2。每次启动 STS.app 文件时,它都会在隐藏的 .eclipse 文件夹下创建一个新的 org.springsource.st
我正在使用 cloudformation 模板创建两个资源 AWS Lambda 函数和角色。 我使用角色 arn 作为环境变量。稍后在 S3 连接的代码中使用它。但出现异常 com.amazonaw
我正在尝试将Gradle评估为我将来的一些项目的下一代构建工具。 到目前为止,我已完成以下步骤: 我的机器上安装了Java 7。 已安装Gradle 2.0 安装了Spring Tool Suite
我基本上有两个问题: 有没有办法从 Eclipse 调用 Maven 控制台? (我可以在其中编写 eclipse:eclipse,然后它开始构建 eclipse 项目) STS在哪里解压它的mave
我的项目资源管理器中有多个项目,所以刚才我开始处理一个应用程序,但我并没有所有其他应用程序都损坏了。 我不知道原因。 我知道我可以从工作区导入项目,但是寻找不同的方式会导致它发生在我身上很多次。 如何
我继承了一个Grails项目,对Grails和Eclipse来说是一个新手。我在STS 2.6.1中有该项目。每次保存文件时,项目都会从头开始进行完整的编译。我没有选中项目->自动生成。有任何想法吗?
我有以下情况: 我有一个域,必须从中删除一个域,但是在几个不同的位置引用了该域,并且grails在编译过程中未捕获此错误。 STS IDE确实强调了这些字段,但是扫掠整个应用程序以查找这些标记的错误是
我安装了 Spring Toolsuite。 我转到新建 -> 导入入门项目。 我选择“构建 RESTful Web 服务”。仅下载“完整”项目,选择 maven,而不打开站点。 现在我到底需要做什么
想知道在使用签名和加密 token 的负载平衡环境中部署自定义 WCF - 安全 token 服务 (STS) 的最佳实践是什么? 我们使用 Cirtix NetScaler 来处理负载平衡和 SSL
有什么方法可以让 Springsourcetoolsuite 版本带有自定义的和已经预装的插件吗?我只是想已经安装了一些插件,这样我就不必每次切换到新机器或类似的东西时都手动进行。这对我来说会更方便一
当我在 STS(spring 工具套件)工作区中导入现有项目时,我遇到了这个问题。以下是我的项目的示例文件夹结构: 现在dao文件夹里有很少的java类,utils文件夹里有很少的java类。当尝试从
我刚刚开始使用 Boot Dashboard 来管理我所有的 Spring Boot 应用程序 ( Boot Dashboard )。 问题是我看不到应用程序的起始端口: 应用程序启动没有任何问题:
在 Spring STS 中遇到以下情况:在定义新服务器的过程中,服务器名称未填充,我无法单击“下一步”。在此之前,我选择了 Tomcat v7.0 Server,同时希望获得最新的 Tomcat 服
我是一名优秀的程序员,十分优秀!