- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我们正在尝试使用 ACS 示例 4(来自 http://claimsid.codeplex.com/)作为我们的 ADFS 项目的模板。我们对 ADFS 身份验证服务的被动请求没有问题。在该示例中,联合提供程序是一个自定义 STS,该示例工作正常。
现在我们希望用我们自己的 ADFS 替换自定义联合提供程序(示例中的 Adatum FP)。
我们现在的设置如下(命名空间隐藏)
ServiceClient 想要调用服务,并且从配置中知道它必须从 IP (Services.Authentication) 获取 token 。然后将 token 传递给 ADFS,后者验证 token 并将新 token 发送回 ServiceClient。客户端将 FP token 传递给服务,服务(作为 ADFS 的依赖方)根据 ADFS 验证 token ,并执行服务方法。
问题:
用 ADFS 替换示例中的 STS,似乎破坏了集成。我们似乎正确地从 IP 取回了 token ,但在将 IP token 传递给 ADFS 时遇到了问题。看来我们的受众 Uri 有问题,但我们添加了
https://'adfs fqdn'/adfs/services/Trust/13/IssuedTokenMixedSymmetricBasic256
客户端异常我们通过此 InnerException 在客户端中获得 MessageSecurityException内部异常 {“ID3242:安全 token 无法通过身份验证或授权。”
[System.ServiceModel.FaultException]: {"ID3242: The security token could not be authenticated or authorized."}
Data: {System.Collections.ListDictionaryInternal}
HelpLink: null
InnerException: null
Message: "ID3242: The security token could not be authenticated or authorized."
Source: null
StackTrace: null
TargetSite: null
ADFS 调试日志
<TraceRecord xmlns="http://schemas.microsoft.com/2009/10/IdentityModel/TraceRecord" Severity="Error">
<Description>Handled exception.</Description>
<AppDomain>Microsoft.IdentityServer.ServiceHost.exe</AppDomain>
<Exception>
<ExceptionType>Microsoft.IdentityModel.Tokens.AudienceUriValidationFailedException, Microsoft.IdentityModel, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35</ExceptionType>
<Message>ID1038: The AudienceRestrictionCondition was not valid because the specified Audience is not present in AudienceUris. Audience: 'https://<adfs fqdn>/adfs/services/Trust/13/IssuedTokenMixedSymmetricBasic256'</Message>
<StackTrace>
at Microsoft.IdentityModel.Tokens.SamlSecurityTokenRequirement.ValidateAudienceRestriction(IList`1 allowedAudienceUris, IList`1 tokenAudiences) at Microsoft.IdentityModel.Tokens.Saml2.Saml2SecurityTokenHandler.ValidateConditions(Saml2Conditions conditions, Boolean enforceAudienceRestriction) at Microsoft.IdentityModel.Tokens.Saml2.Saml2SecurityTokenHandler.ValidateToken(SecurityToken token) at Microsoft.IdentityServer.Service.Tokens.MSISSaml2TokenHandler.ValidateToken(SecurityToken token) at Microsoft.IdentityModel.Tokens.WrappedSaml2SecurityTokenAuthenticator.ValidateTokenCore(SecurityToken token) at System.IdentityModel.Selectors.SecurityTokenAuthenticator.ValidateToken(SecurityToken token) at Microsoft.IdentityModel.Tokens.WrappedSamlSecurityTokenAuthenticator.ValidateTokenCore(SecurityToken token) at System.IdentityModel.Selectors.SecurityTokenAuthenticator.ValidateToken(SecurityToken token) at System.ServiceModel.Security.ReceiveSecurityHeader.ReadToken(XmlReader reader, SecurityTokenResolver tokenResolver, IList`1 allowedTokenAuthenticators, SecurityTokenAuthenticator&amp; usedTokenAuthenticator) at
....
</StackTrace>
</Exception>
</TraceRecord>
我们已将受众 uri 添加到我们的 IP Web.config 中:
<audienceUris mode="Always">
<add value="https://<adfs fqdn>/adfs/services/Trust/13/IssuedTokenMixedSymmetricBasic256" />
</audienceUris>
如有必要,我们可以发布其他配置文件和 ADFS 配置的屏幕截图。
最佳答案
这需要一些工作,但我们最终解决了问题。我们没有配置它,而是在代码中建立了连接。我想我们可能在客户端配置中的某处出错了。
对尝试此操作的任何人的一些建议 - 首先在代码中建立连接。 XML 配置有点难用。
我们在 leastprivilege.com 上找到了一些示例代码
private static SecurityToken GetIdPToken()
{
var factory = new WSTrustChannelFactory(
new UserNameWSTrustBinding(SecurityMode.TransportWithMessageCredential),
"https://systemidp.dk/Issuer.svc");
factory.TrustVersion = TrustVersion.WSTrust13;
factory.Credentials.UserName.UserName = "LITWARE\\rick";
factory.Credentials.UserName.Password = "thisPasswordIsNotChecked";
var rst = new RequestSecurityToken
{
RequestType = WSTrust13Constants.RequestTypes.Issue,
AppliesTo = new EndpointAddress("https://adfsfqdn/adfs/services/trust"),
KeyType = WSTrust13Constants.KeyTypes.Symmetric,
ReplyTo = "https://adfsfqdn/adfs/services/trust/13/issuedtokenmixedsymmetricbasic256/"
};
factory.ConfigureChannelFactory();
var channel = factory.CreateChannel();
return channel.Issue(rst);
}
private static SecurityToken GetRSTSToken(SecurityToken idpToken)
{
var binding = new IssuedTokenWSTrustBinding();
binding.SecurityMode = SecurityMode.TransportWithMessageCredential;
var factory = new WSTrustChannelFactory(
binding,
"https://adfsfqdn/adfs/services/trust/13/issuedtokenmixedsymmetricbasic256/");
factory.TrustVersion = TrustVersion.WSTrust13;
factory.Credentials.SupportInteractive = false;
var rst = new RequestSecurityToken
{
RequestType = WSTrust13Constants.RequestTypes.Issue,
AppliesTo = new EndpointAddress("https://services.dk/WebService.svc"),
KeyType = WSTrust13Constants.KeyTypes.Symmetric
};
factory.ConfigureChannelFactory();
var channel = factory.CreateChannelWithIssuedToken(idpToken);
return channel.Issue(rst);
}
使用 token 创建 WCF 调用
var ipdtoken = GetIdPToken();
var stsToken = GetRSTSToken(ipdtoken);
var binding = new WS2007FederationHttpBinding(WSFederationHttpSecurityMode.TransportWithMessageCredential);
binding.Security.Message.EstablishSecurityContext = false;
var factory = new ChannelFactory<IWebService>(binding, "https://services.dk/WebService.svc");
factory.ConfigureChannelFactory();
factory.Credentials.SupportInteractive = false;
var serviceChannel = factory.CreateChannelWithIssuedToken(stsToken);
var s = serviceChannel.GetUserInformation();
关于c# - 将 ACS 与 ADFS 作为 STS 实现,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7819473/
关闭。这个问题不符合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 服
我是一名优秀的程序员,十分优秀!