错误:
ID4175:IssuerNameRegistry无法识别安全令牌的颁发者.要从此颁发者接受安全性令牌,请配置IssuerNameRegistry以返回此颁发者的有效名称.
情况:我在一台IIS服务器(我的QA环境)上运行了3或4个asp.net应用程序,今天早上开始返回此错误.我从一个匿名站点开始,单击指向安全部分的链接,重定向到我的联合服务代理,进行身份验证,然后重定向回我的安全页面,但会出现此错误.
这个链接和其他一些链接表明我的web.config中的指纹是错误的,但我可以证明(通过TFS中的历史记录)我的web.config文件中的指纹没有改变.
我已经尝试重新运行fedutil,但仍然得到相同的消息(尽管它提供了不同的指纹).有任何想法吗?
特别是在浏览了整个互联网之后
我尝试了对authsource.php和元数据php的所有建议修改.没有任何效果.
这是我的authsource.php
'default-sp' => array(
'saml:SP',
'privatekey' => 'saml.pem',
'certificate' => 'saml.crt',
'idp' => 'http://domain.com/adfs/services/trust',
Run Code Online (Sandbox Code Playgroud)
我用它XML to simpleSAMLphp metadata converter
来生成saml20-idp-remote.php
因此,当我访问该页面时,SimpleSAMLPHP正确地将我重定向到IDP登录页面.我解码了SAML请求:
<samlp:AuthnRequest
xmlns:samlp="urn:oasis:names:tc:SAML:2.0:protocol"
xmlns:saml="urn:oasis:names:tc:SAML:2.0:assertion"
ID="_4e03333c7aa76314d965e05f8fcdd3e1f4c5be96c8"
Version="2.0"
IssueInstant="2014-12-11T19:41:50Z"
Destination="https://domain.com/adfs/ls/"
AssertionConsumerServiceURL="https://sub.domain.com/simplesaml/module.php/saml/sp/saml2-acs.php/default-sp"
ProtocolBinding="urn:oasis:names:tc:SAML:2.0:bindings:HTTP-POST">
<saml:Issuer>
https://su.bdomain.com/simplesaml/module.php/saml/sp/metadata.php/default-sp
</saml:Issuer>
<samlp:NameIDPolicy Format="urn:oasis:names:tc:SAML:2.0:nameid-format:transient" AllowCreate="true"/>
</samlp:AuthnRequest>
Run Code Online (Sandbox Code Playgroud)
使用有效的测试帐户登录后,我将重定向回到我的网站并显示错误.
SimpleSAML_Error_Error: UNHANDLEDEXCEPTION
Backtrace:
0 /var/www/html/igt_s3k/web/simplesamlphp/www/module.php:179 (N/A)
Caused by: sspmod_saml_Error: Requester/InvalidNameIDPolicy
Backtrace:
3 /var/www/html/igt_s3k/web/simplesamlphp/modules/saml/lib/Message.php:385 (sspmod_saml_Message::getResponseError)
2 /var/www/html/igt_s3k/web/simplesamlphp/modules/saml/lib/Message.php:495 (sspmod_saml_Message::processResponse)
1 /var/www/html/igt_s3k/web/simplesamlphp/modules/saml/www/sp/saml2-acs.php:96 (require)
0 /var/www/html/igt_s3k/web/simplesamlphp/www/module.php:134 (N/A)
Run Code Online (Sandbox Code Playgroud)
我尝试设置不同的NameIDPolicy,但没有一个工作.
//'NameIDFormat' => 'urn:oasis:names:tc:SAML:1.1:nameid-format:emailAddress',
//'NameIDPolicy' => 'urn:oasis:names:tc:SAML:2.0:nameid-format:transient', …
Run Code Online (Sandbox Code Playgroud) 我创建了一个基本的MVC 3网站,该网站使用Windows Azure的访问控制服务(ACS)对Active Directory联合服务(ADFS)端点执行用户身份验证.我按照"添加STS参考"向导,该网站运行正常,并在IE中完美地验证用户.但是,当我使用Chrome或Firefox时,它会不断提示我的凭据一遍又一遍.
我发现这篇关于technet的帖子提到了这个问题,因为它与Firefox有关,但是没有提到Chrome的修复,也不觉得修复Firefox所需的步骤在现实世界中是实用的(即我不能指望最终用户做这个)
还有其他人遇到过这个障碍吗?我究竟做错了什么?
我使用ADFS 2.0已经有一段时间了,我理解它是如何工作的.我已经完成了十几个自定义RP,自定义STS以及使用ADFS作为依赖STS.
但是,我有一个简单的要求,我仍然无法实现.
我希望我的用户在一段固定的时间后被迫重新登录.我们说1分钟,用于测试目的.
首先,我在RP方面进行了一些修正.似乎由于未知原因,即使令牌的validTo
时间点回到原点,RP也会保留会话.这与Vittorio Bertocci在他的书(第123页)中所说的相反,他在书中展示了如何执行滑动过期 - 他说"SessionAuthenticationModule将负责处理过期的会话".好吧,对我来说它没有,但是我在这里找到了一个技巧http://blogs.planbsoftware.co.nz/?p=521 - 看看"if"条款:
sam.SessionSecurityTokenReceived +=
( s, e ) =>
{
SessionAuthenticationModule _sam = s as SessionAuthenticationModule;
DateTime now = DateTime.UtcNow;
DateTime validFrom = e.SessionToken.ValidFrom;
DateTime validTo = e.SessionToken.ValidTo;
try
{
double halfSpan = ( validTo - validFrom ).TotalSeconds / 2;
if ( validTo < now )
{
_sam.DeleteSessionTokenCookie();
e.Cancel = true;
}
}
catch ( Exception ex )
{
int v = 0;
}
};
Run Code Online (Sandbox Code Playgroud)
这个技巧解决了RP方面的问题.当令牌无效时,应用程序将其清除并重定向到登录页面.
现在出现了问题.我的登录页面使用该 …
我们有几个客户使用我们的Web应用程序(不是Intranet),有些客户希望他们的登录应该与他们的组织Active Directory集成.他们只是希望用户登录到他们的Windows帐户并可以访问Web应用程序而无需输入任何用户凭据.
我已经阅读了一些关于ADFS的文章,但仍然不确定如何集成或实现它.任何建议的解决方
谢谢!
所有,
我一直在阅读基于声明的身份验证,但我仍然有点困惑.我正在努力巩固我的理解,特别是与SharePoint 2010/2013有关,但也通常(即ASP.NET).
我对各种技术术语的理解如下:
WIF(Windows Identity Foundation) - 用于消费身份声明和构建自定义STS等的.NET库(API集).
依赖方 - 索赔的"消费者"(即SharePoint,ASP.NET网站等).索赔是通过STS(仅限IP-STS?)提供的.
STS(安全令牌服务) - 一种发布安全令牌的专用Web服务.有两种口味,有些STS可能同时都有两种口味?
可信身份提供程序(SharePoint术语) - AKA.IP-STS.
SharePoint 2010/2013 STS - 使用WIF开发的SharePoint Service应用程序,仅用作RP-STS.充当许多用户可配置的可信身份提供商(IP-STS)的可插入聚合点.如果需要,可以使用WIF手工构建.
ADFS 2.0 - 专门用于仅针对Active Directory实例联合组织的Windows角色.公开使用WIF构建的IP-STS端点.我对ADFS 2.0的理解是它不允许您"聚合"其他身份提供者 - 它只允许您针对可能不是本地的特定AD实例进行身份验证,因此需要联合以支持SSO .
Windows Azure ACS 2.0 - 专门用于联合任何已配置的第三方身份提供商(即Microsoft帐户,Google,Facebook,ADFS 2.0)的服务.充当其他身份提供商的可插入聚合点,其作用有点像依赖方.公开使用WIF构建的IP-STS端点.它聚合的身份提供商不一定是IP-STS,但ACS 2.0使用其内置的IP-STS通过声明公开所有内容.
SharePoint 2010/2013问题:
我的主要问题是我看过几篇关于ADFS 2.0和SharePoint的文章,几乎就像你用ADFS 2.0 取代内置的SharePoint 2010/2013 STS一样!希望这只是我的阅读,但它让我理解困惑.
2.1.SharePoint STS已经支持AD身份验证作为OOTB可信身份提供程序选项,如果您想使用ADFS 2.0,则可以将其添加为我见过博客帖子的可信身份提供程序(IP-STS).
2.2.根据我对ADFS 2.0的描述,为SharePoint STS更改它实际上会给你一个不太灵活的解决方案吗?
声明:
ASP.NET WIF问题: …
我正在尝试构建一个使用ADFS和声明的系统.目前,这只是一个"玩具"实施.
我已经构建了一个非常简单的MVC Web应用程序,使用Visual Studio中的"Identity and Access ..."向导进行设置,以便与ADFS 2.0服务器通信,并将其部署到IIS服务器.一切正常,我可以检查并列出收到的索赔.
下一步是构建基于Web API的REST服务(表示MVC应用程序将依赖的后端服务),因此我希望将凭据传递给该后端服务器,以便它可以进行适当的授权决定.
所以第一步是让我创建委托令牌(然后,我希望能够根据HttpClient
类来计算如何处理它以进行其余的调用).我有这个:
//We need to take the bootstrap token and create an appropriate ActAs token
var rst = new RequestSecurityToken
{
AppliesTo = new EndpointReference("https://other-iis.example.com/Rest"),
RequestType = RequestTypes.Issue,
KeyType = KeyTypes.Symmetric,
ActAs = new SecurityTokenElement(((BootstrapContext)((ClaimsIdentity)User.Identity).BootstrapContext).SecurityToken)
};
var sts = new SecurityTokenService(); //This line isn't valid
var resp = sts.Issue(System.Threading.Thread.CurrentPrincipal as ClaimsPrincipal, rst);
Run Code Online (Sandbox Code Playgroud)
但是,问题在于它SecurityTokenService
是抽象的.我找不到从这个类派生的任何类型的任何System.IdentityModel
也不System.IdentityModel.Services
及上述不包括的ADFS服务器,我显然需要在某些时候提供任何参考.
当然,我也可能完全走错了路线,或者只是遇到了一个小绊脚石而且看不到远处有一个更大的一个,所以任何有关这方面的建议也会受到赞赏.
我已经看过,例如,Identity Delegation Scenario,但是CreateChannelActingAs
当我正在与休息服务交谈时,我认为它不会起作用(或者它会吗?),而且似乎也没有适用于.NET 4.5.
我们编写一个Sharepoint应用程序,将其扩展为Provider-hosted,使用证书,并将我们的MVC项目锚定到它.在同一个IIS上展开所有这些,扩展了Sharepoint.
任务1:用户登录Sharepoint,启动我们的应用程序; 应用程序启动时没有任何授权请求,并从登录的Sharepoint获取用户.
任务#2:如果需要Sharepoint服务请求,我们的应用程序使用用户登录Sharepoint的相同用户名登录Sharepoint.
我们尝试了:
1) 构建提供者托管的应用程序,在其中编写MVC,创建自唱歌证书,调整Sharepoint站点和MVC之间的高可信度.
我们得到:
如果我们的MVC使用Windows身份验证,那么在转移到我们的应用程序时,会再次请求用户名和密码; 进入它们时,我们可以ClientContext
通过TokenHelper
使用该GetS2SClientContextWithWindowsIdentity
方法.
如果禁用了Windows身份验证,则用户不会登录请求,并且此方法会响应用户未登录的异常.
2)
我们安装并调整了ADFS,配置了Sharepoint以便与ADFS一起工作,写了Sharepoint的地址和我们在中继方信任中的应用(在Identifiers and
WS-Federtation`被动端点中)
我们得到: 用户登录Sharepoint,当转移到我们的应用程序时,后者获取用户数据(声明)
因此,第一项任务已经解除.之后,出现了在授权用户下获得对Sharepoint服务的访问的问题
我们试图AccessToken
通过我们收到的声明获取Sharepoint我们试图转移以下声明:
nii":"trusted:adfs
nii":"urn:office:idp:forms:adfs201 //adfs201 - name of our ADFS service
upn:UserLogin
emailaddress:UserEmail@domain.kz
Run Code Online (Sandbox Code Playgroud)
之后,我们AccessToken
根据输入的声明调用了一个方法
string issuer = string.IsNullOrEmpty(sourceRealm) ? issuerApplication : string.Format("{0}@{1}", issuerApplication, sourceRealm);
string nameid = string.IsNullOrEmpty(sourceRealm) ? sourceApplication : string.Format("{0}@{1}", sourceApplication, sourceRealm);
string audience = string.Format("{0}/{1}@{2}", targetApplication, targetApplicationHostName, targetRealm);
List<JsonWebTokenClaim> actorClaims = new List<JsonWebTokenClaim>();
actorClaims.Add(new JsonWebTokenClaim(JsonWebTokenConstants.ReservedClaims.NameIdentifier, nameid));
if …
Run Code Online (Sandbox Code Playgroud) 我正在努力将Spring SAML Extension集成到我们的应用程序中,并将SSO与我们客户的ADFS2.0之一作为IDP,我们从我们的应用程序生成服务提供程序元数据并将ADFS元数据导入我们的appliaction.When我选择客户端idp然后单击开始单一符号并提供正确的客户端凭据,我们将看到SAML响应,如下所示:
Saml回应.
<samlp:Response xmlns:samlp="urn:oasis:names:tc:SAML:2.0:protocol" Consent="urn:oasis:names:tc:SAML:2.0:consent:unspecified"
Destination="https://sso.spire2grow.com:8443/<our application>/saml/SSO" ID="_d7fa7cb7-a858-4d4e-aa4c-bf7a5d11e485"
InResponseTo="a2icei36d347di68gi33534cc13fd1" IssueInstant="2014-09-30T14:17:21.819Z" Version="2.0"><Issuer
xmlns="urn:oasis:names:tc:SAML:2.0:assertion"><Clients ADFS trust services URL></Issuer><samlp:Status><samlp:StatusCode
Value="urn:oasis:names:tc:SAML:2.0:status:Responder"></samlp:StatusCode></samlp:Status></samlp:Response>
Run Code Online (Sandbox Code Playgroud)
但我也看到以下异常被抛出,因为服务提供商无法验证消息.
异常消息:
[351545]2014-09-30 19:47:21,714 DEBUG - SAML message intended destination endpoint matched recipient endpoint
[351545]2014-09-30 19:47:21,714 DEBUG - Authentication attempt using org.springframework.security.saml.SAMLAuthenticationProvider
[351545]2014-09-30 19:47:21,715 DEBUG - Error validating SAML message
org.opensaml.common.SAMLException: Response has invalid status code urn:oasis:names:tc:SAML:2.0:status:Responder, status message is null
at org.springframework.security.saml.websso.WebSSOProfileConsumerImpl.processAuthenticationResponse(WebSSOProfileConsumerImpl.java:113)
at org.springframework.security.saml.SAMLAuthenticationProvider.authenticate(SAMLAuthenticationProvider.java:82)
at org.springframework.security.authentication.ProviderManager.authenticate(ProviderManager.java:156)
at org.springframework.security.saml.SAMLProcessingFilter.attemptAuthentication(SAMLProcessingFilter.java:84)
at org.springframework.security.web.authentication.AbstractAuthenticationProcessingFilter.doFilter(AbstractAuthenticationProcessingFilter.java:195)
at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:342)
Run Code Online (Sandbox Code Playgroud)
如果我在这里做任何事情,请指出任何人.
更新:
看到为这个问题提供的答案后,我看到了ADFS的以下错误.
Microsoft.IdentityServer.Protocols.Saml.SamlProtocolSignatureAlgorithmMismatchException: MSIS7093: The message is …
Run Code Online (Sandbox Code Playgroud) 有一个用户存储,即内部部署AD.ADFS为SharePoint 2013和Power BI提供身份验证.
自定义Web应用程序需要从AD验证用户.Web应用程序后端还需要访问SharePoint REST API.
目标是使用单点登录实现上述目标.如果签入三个应用程序中的任何一个,用户不必输入其他任何一个的凭据.此外,自定义Web应用程序还显示来自SharePoint(iFrame和REST API)和Power BI(iFrame)的内容.
我们尝试了以下两种解决方案,但在任何一种情况下都遇到了问题.
什么不起作用:导航到Power BI或将其包含在iFrame中会将用户重定向到ADFS登录页面.这是因为用户尚未在浏览器中使用ADFS进行身份验证.
什么不起作用:Web应用程序无法使用从ADFS为Web应用程序收到的SAML令牌向SharePoint发出REST API请求.我们已尝试使用该SAML令牌代表登录用户从ADFS for SharePoint请求另一个令牌.这也不起作用.同样,SharePoint 2013内部部署可能不会代表请求接受.
有没有办法为所有三个应用程序提供SSO,同时还可以从Web应用程序获得对SharePoint的REST API访问?用户只需登录一次,最好只登录Web应用程序.
adfs2.0 ×10
c# ×4
wif ×3
adfs ×2
asp.net-mvc ×2
sharepoint ×2
.net-4.5 ×1
acs ×1
azure ×1
claims ×1
php ×1
powerbi ×1
saml ×1
spring-saml ×1