标签: adfs2.0

ADFS 2.0错误ID4175:IssuerNameRegistry无法识别安全令牌的颁发者

错误:

ID4175:IssuerNameRegistry无法识别安全令牌的颁发者.要从此颁发者接受安全性令牌,请配置IssuerNameRegistry以返回此颁发者的有效名称.

情况:我在一台IIS服务器(我的QA环境)上运行了3或4个asp.net应用程序,今天早上开始返回此错误.我从一个匿名站点开始,单击指向安全部分的链接,重定向到我的联合服务代理,进行身份验证,然后重定向回我的安全页面,但会出现此错误.

这个链接和其他一些链接表明我的web.config中的指纹是错误的,但我可以证明(通过TFS中的历史记录)我的web.config文件中的指纹没有改变.

我已经尝试重新运行fedutil,但仍然得到相同的消息(尽管它提供了不同的指纹).有任何想法吗?

wif adfs2.0

10
推荐指数
1
解决办法
2万
查看次数

使用SimpleSAMLPHP SP和ADFS IDP的请求者/ InvalidNameIDPolicy错误

特别是在浏览了整个互联网之后

我尝试了对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)

php saml adfs2.0 simplesamlphp

10
推荐指数
3
解决办法
1万
查看次数

使用Firefox和Chrome时,使用Azure ACS和ADFS的MVC3站点会不断提示输入凭据

我创建了一个基本的MVC 3网站,该网站使用Windows Azure的访问控制服务(ACS)对Active Directory联合服务(ADFS)端点执行用户身份验证.我按照"添加STS参考"向导,该网站运行正常,并在IE中完美地验证用户.但是,当我使用Chrome或Firefox时,它会不断提示我的凭据一遍又一遍.

我发现这篇关于technet的帖子提到了这个问题,因为它与Firefox有关,但是没有提到Chrome的修复,也不觉得修复Firefox所需的步骤在现实世界中是实用的(即我不能指望最终用户做这个)

http://social.technet.microsoft.com/wiki/contents/articles/ad-fs-2-0-continuously-prompted-for-credentials-when-using-firefox-3-6-3.aspx

还有其他人遇到过这个障碍吗?我究竟做错了什么?

asp.net-mvc accesscontrolservice azure adfs2.0

9
推荐指数
1
解决办法
2万
查看次数

如何在与ADFS 2.0联合时正确设置超时

我使用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方面的问题.当令牌无效时,应用程序将其清除并重定向到登录页面.

现在出现了问题.我的登录页面使用该 …

c# wif adfs2.0

9
推荐指数
1
解决办法
1万
查看次数

与Active Directory集成的.NET应用程序的单点登录

我们有几个客户使用我们的Web应用程序(不是Intranet),有些客户希望他们的登录应该与他们的组织Active Directory集成.他们只是希望用户登录到他们的Windows帐户并可以访问Web应用程序而无需输入任何用户凭据.

我已经阅读了一些关于ADFS的文章,但仍然不确定如何集成或实现它.任何建议的解决方

谢谢!

c# adfs active-directory single-sign-on adfs2.0

9
推荐指数
2
解决办法
2万
查看次数

基于声明的身份验证 - SharePoint和一般

所有,

我一直在阅读基于声明的身份验证,但我仍然有点困惑.我正在努力巩固我的理解,特别是与SharePoint 2010/2013有关,但也通常(即ASP.NET).

我对各种技术术语的理解如下:

  • WIF(Windows Identity Foundation) - 用于消费身份声明和构建自定义STS等的.NET库(API集).

  • 依赖方 - 索赔的"消费者"(即SharePoint,ASP.NET网站等).索赔是通过STS(仅限IP-STS?)提供的.

  • STS(安全令牌服务) - 一种发布安全令牌的专用Web服务.有两种口味,有些STS可能同时都有两种口味?

    • RP-STS(依赖方安全令牌服务)
    • IP-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一样!希望这只是我的阅读,但它让我理解困惑.

  1. 你真的可以这样做吗?如果你真的想要,我认为没有理由你不能,但我认为你需要禁用SharePoint STS并进行大量的手动配置?
  2. 你为什么想做这个?

2.1.SharePoint STS已经支持AD身份验证作为OOTB可信身份提供程序选项,如果您想使用ADFS 2.0,则可以将其添加为我见过博客帖子的可信身份提供程序(IP-STS).

2.2.根据我对ADFS 2.0的描述,为SharePoint STS更改它实际上会给你一个不太灵活的解决方案吗?

声明:

  • 您可以将SharePoint STS配置为使用ADFS 2.0 aa Trusted Identity Provider(IP-STS),以及代替本地AD.
  • 您可以将SharePoint STS配置为使用Windows Azure ACS 2.0 aa Trusted Identity Provider(IP-STS).这样可以很容易地支持第三方身份验证提供程序,而无需使用WIF开发自己的IP-STS.

ASP.NET WIF问题: …

claims-based-identity claims wif adfs2.0 acs

9
推荐指数
1
解决办法
2775
查看次数

创建委托令牌 - 无法创建SecurityTokenService

我正在尝试构建一个使用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.

c# adfs2.0 .net-4.5 visual-studio-2012

8
推荐指数
1
解决办法
2581
查看次数

Sharepoint身份验证.如何从ADFS获取SharePoint cookie

我们编写一个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 andWS-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)

c# asp.net-mvc sharepoint adfs2.0

8
推荐指数
1
解决办法
4473
查看次数

将ADFS与Spring SAML Extension集成时的问题

我正在努力将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)

adfs2.0 spring-saml

8
推荐指数
3
解决办法
3万
查看次数

适用于SharePoint 2013内部部署,Power BI和自定义Web应用程序的ADFS单一登录?

脚本

有一个用户存储,即内部部署AD.ADFS为SharePoint 2013和Power BI提供身份验证.

自定义Web应用程序需要从AD验证用户.Web应用程序后端还需要访问SharePoint REST API.

目标是使用单点登录实现上述目标.如果签入三个应用程序中的任何一个,用户不必输入其他任何一个的凭据.此外,自定义Web应用程序还显示来自SharePoint(iFrame和REST API)和Power BI(iFrame)的内容.

我们尝试了以下两种解决方案,但在任何一种情况下都遇到了问题.

解决方案1

  • 用户在Web应用程序中输入凭据.
  • Web应用程序后端使用这些凭据从ADFS获取SAML令牌.
  • Web应用程序后端使用SAML令牌通过基于表单的身份验证向SharePoint用户进行身份验证,并检索FedAuth cookie.
  • Web应用程序后端使用FedAuth cookie向SharePoint发出REST API请求
  • Web应用程序前端使用SAML令牌通过基于表单的身份验证向SharePoint用户进行身份验证.这允许iFrame中的SharePoint内容.

什么不起作用:导航到Power BI或将其包含在iFrame中会将用户重定向到ADFS登录页面.这是因为用户尚未在浏览器中使用ADFS进行身份验证.

解决方案2

  • ADFS SSO也用于自定义Web应用程序.
  • 导航到三个应用程序中的任何一个都会将用户重定向到ADFS登录页面
  • 用户输入其凭据并使用SAML令牌重定向回应用程序.
  • 导航到任何其他两个应用程序会将用户重定向到ADFS,ADFS将使用另一个SAML令牌重定向回应用程序,而无需用户再次登录.
  • 这允许SharePoint和Power BI内容都包含在iFrame中的Web应用程序中.

什么不起作用:Web应用程序无法使用从ADFS为Web应用程序收到的SAML令牌向SharePoint发出REST API请求.我们已尝试使用该SAML令牌代表登录用户从ADFS for SharePoint请求另一个令牌.这也不起作用.同样,SharePoint 2013内部部署可能不会代表请求接受.

有没有办法为所有三个应用程序提供SSO,同时还可以从Web应用程序获得对SharePoint的REST API访问?用户只需登录一次,最好只登录Web应用程序.

sharepoint adfs adfs2.0 sharepoint-2013 powerbi

8
推荐指数
1
解决办法
520
查看次数