标签: adfs

在Office 365中使用第三方身份提供程序

我们目前正在使用内部SSO溶液,使用2-因素认证,其生成SAML以允许SSO到Google应用和销售人员.我们希望允许支持Office 365.

我正在查看Office 365的所有文档,从我看到的,它使用SAML,但仅限于由ADFS提供.

是否可以将Office 365与纯SAML解决方案一起使用?或者是否可以将ADFS与其他身份提供程序一起使用(因此不能使用Active Directory).

我已经看到了一个带有Tivoli IP的示例,但我不太了解这些角色,如果我理解正确的话,它实际上将实际的身份验证从ADFS推迟到Tivoli,但这是正确的吗?如果这是真的,那会很好:)

除此之外,从我的google-expedition中我可以看到以下选项在Office 365中使用我们自己的SSO解决方案:

  1. 从ADFS(aspx)调整登录页面并在那里添加我们的2fa解决方案.(来源)
  2. 使用Forefront UAG,但不确定这究竟意味着什么(来源)
  3. 使用假装表现为ADFS的服务(来源 - 在评论中)
  4. 使用SAML联合身份验证(如果我理解正确的话)(来源)

从3.我会得出结论,4.不可能,但这只是旧的信息,现在不再有效?

感谢您提供任何有用的见解:)

adfs single-sign-on office365

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

如何将Azure Active Directory(WAAD)连接到Windows Azure访问控制服务(ACS)?

我已经在使用ACS,并且很乐意将Azure Active Directory设置为身份提供者.

我似乎无法找到从WAAD获取ADFS信息的任何方法,但我猜它还处于早期......

有谁知道这是否可能?

adfs active-directory azure acs azure-active-directory

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

ADFS返回注销响应,状态代码为"urn:oasis:names:tc:SAML:2.0:status:Requester"

我正在向ADFS发送saml 2.0注销请求并获取注销响应,状态代码为:"urn:oasis:names:tc:SAML:2.0:status:Requester".

我检查了Name ID值,它等于Assertion上的名称ID.我没有看到ADFS日志有任何错误.

这是我的退出请求:

<?xml version="1.0"?>
<samlp:LogoutRequest xmlns:saml="urn:oasis:names:tc:SAML:2.0:assertion" xmlns:samlp="urn:oasis:names:tc:SAML:2.0:protocol" Version="2.0" Destination="https://IDP_adfs.xxx.com/adfs/ls/" ID="id007471cfceb449239be1a6a48d28ae89" IssueInstant="2015-01-05T15:30:56.3978094Z">
<saml:Issuer>https://SP.xxx.com</saml:Issuer>
<Signature xmlns="http://www.w3.org/2000/09/xmldsig#">
<SignedInfo>
  <CanonicalizationMethod Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"/>
  <SignatureMethod Algorithm="http://www.w3.org/2000/09/xmldsig#rsa-sha1"/>
  <Reference URI="#id007471cfceb449239be1a6a48d28ae89">
    <Transforms>
      <Transform Algorithm="http://www.w3.org/2000/09/xmldsig#enveloped-signature"/>
      <Transform Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"/>
    </Transforms>
    <DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"/>
    <DigestValue>GsF...t/uwM=</DigestValue>
  </Reference>
</SignedInfo>
<SignatureValue>qY5RIT/eT9Tgkg7dj...IPn/2STu7iepIQ==</SignatureValue>
<KeyInfo>
  <X509Data>
    <X509Certificate>MIIC5jCCAc...qAdOYsuKUgO9WNers=</X509Certificate>
  </X509Data>
</KeyInfo>
</Signature>
<saml:NameID Format="http://schemas.xmlsoap.org/claims/UPN">user@xxx.com</saml:NameID>
<samlp:SessionIndex>_48b8991b-d3c4-4f8a-9c8b-a86e0a718c95</samlp:SessionIndex>
</samlp:LogoutRequest>
Run Code Online (Sandbox Code Playgroud)

这是我的退出响应:

<?xml version="1.0"?>
<samlp:LogoutResponse xmlns:samlp="urn:oasis:names:tc:SAML:2.0:protocol" ID="_79573c99-c8d3-4ea3-8b53-e15551128318" Version="2.0" IssueInstant="2015-01-05T15:31:02.954Z" Destination="https://SP.xxx.com/Account/logout/" Consent="urn:oasis:names:tc:SAML:2.0:consent:unspecified" InResponseTo="id007471cfceb449239be1a6a48d28ae89">
<Issuer xmlns="urn:oasis:names:tc:SAML:2.0:assertion">http://IDP_Adfs.xxx.com/adfs/services/trust</Issuer>
 <ds:Signature xmlns:ds="http://www.w3.org/2000/09/xmldsig#">
<ds:SignedInfo>
  <ds:CanonicalizationMethod Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"/>
  <ds:SignatureMethod Algorithm="http://www.w3.org/2000/09/xmldsig#rsa-sha1"/>
  <ds:Reference URI="#_79573c99-c8d3-4ea3-8b53-e15551128318">
    <ds:Transforms>
      <ds:Transform Algorithm="http://www.w3.org/2000/09/xmldsig#enveloped-signature"/>
      <ds:Transform Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"/>
    </ds:Transforms>
    <ds:DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"/>
    <ds:DigestValue>B/badvPpTrEuKZsqOvBQM54CIJ8=</ds:DigestValue>
  </ds:Reference>
</ds:SignedInfo>
<ds:SignatureValue>cWIEl5wY3...lIiQDltacRcjxyw==</ds:SignatureValue> …
Run Code Online (Sandbox Code Playgroud)

c# adfs http-post saml-2.0 asp.net-mvc-4

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

STS 不支持请求的身份验证方法

我们的 Java 应用程序与客户的 ADFS 3.0 服务器联合。通过 SAMLP 向 ADFS 服务器发送身份验证请求(SP 发起)后出现问题。它适用于 Intranet 用例,其中 Windows 身份验证在身份验证策略中的 ADFS 服务器上指定。SP 应用程序正在使用 ForgeRock 的 Fedlet 库,该库通过 SAML 身份验证请求强制发送 RequestedAuthnContext 属性:

samlp:RequestedAuthnContext xmlns:samlp="urn:oasis:names:tc:SAML:2.0:protocol"
                             Comparison="exact"
                             >
    <saml:AuthnContextClassRef xmlns:saml="urn:oasis:names:tc:SAML:2.0:assertion">urn:oasis:names:tc:SAML:2.0:ac:classes:Password</saml:AuthnContextClassRef>
</samlp:RequestedAuthnContext>
Run Code Online (Sandbox Code Playgroud)

我们最初也遇到了 Extranet 身份验证的问题,其中在 ADFS 上选择了表单身份验证。我们通过为我们的 RP 添加 Claim 自定义规则解决了这个问题:

exists([Type == "http://schemas.xmlsoap.org/ws/2005/05/identity/claims/nameidentifier"]) => issue(Type = "http://schemas.microsoft.com/ws/2008/06/identity/claims/authenticationmethod", Value = "urn:oasis:names:tc:SAML:2.0:ac:classes:Password");
Run Code Online (Sandbox Code Playgroud)

现在我们堆满了 Intranet 用例。在 ADFS 方面,我们收到以下错误:

MSIS7102: Requested Authentication Method is not supported on the STS.
   at Microsoft.IdentityServer.Web.Authentication.GlobalAuthenticationPolicyEvaluator.EvaluatePolicy(IList`1 mappedRequestedAuthMethods, AccessLocation location, ProtocolContext context, HashSet`1 authMethodsInToken, Boolean& validAuthMethodsInToken)
   at Microsoft.IdentityServer.Web.Authentication.AuthenticationPolicyEvaluator.RetrieveFirstStageAuthenticationDomain(Boolean& …
Run Code Online (Sandbox Code Playgroud)

adfs windows-authentication saml saml-2.0 adfs3.0

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

使用ADFS OAuth刷新令牌

我将ADFS3 OAuth2配置为返回Refresh Tokens:

PS> Set-AdfsRelyingPartyTrust -TargetName "RPT Name" -IssueOAuthRefreshTokensTo AllDevices
PS> Set-AdfsRelyingPartyTrust -TargetName "RPT Name" -TokenLifetime 10
PS> Set-AdfsProperties -SSOLifetime 480
Run Code Online (Sandbox Code Playgroud)

Access Token持续10分钟,Refresh Token持续480分钟.

然后我通过GETing生成一个访问令牌:

https://myadfsdomain/adfs/oauth/authorize
    ?response_type=code
    &client_id=MYCLIENTID
    &redirect_uri=https://myserver/callback
    &resource=MYRelyingPartyId
Run Code Online (Sandbox Code Playgroud)

并发布responseCodeEg:

$http({method: "post", 
       headers: {'Content-Type': 'application/x-www-form-urlencoded'}, 
       url: "https://myadfsdomain/adfs/oauth2/token", 
       data: "client_id=MYCLIENTID&code=" + responseCode + "&redirect_uri=https://myserver/callback&grant_type=authorization_code"  })
Run Code Online (Sandbox Code Playgroud)

响应具有访问令牌,类型,过期时间和刷新令牌:

{"access_token":"blah...",
 "token_type":"bearer",
 "expires_in":600,
 "refresh_token":"blahblah..."}
Run Code Online (Sandbox Code Playgroud)

大.访问令牌现在有效,无论它配置多久(这里10分钟)

问题是,一旦该时间到期,我们如何使用它refresh_token来获取另一个访问令牌?IE:

  • 什么是URL?
  • 我们发布了吗?
  • 我们用什么参数来POST refresh_token

oauth adfs oauth-2.0 adfs3.0

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

如何在Windows 2016 RTM ADFS上为富客户端或Web应用程序配置客户端和信赖方信任?

我以前有一个富客户端使用Windows 2012 R2 ADFS进行身份验证,并在此处进行了记录.我们正在转向Windows 2016 RTM ADFS(因为2012 R2不能正确支持Web Apps/ADAL.js),我正在努力将该配置转换/扩展.无论我做什么,当客户端点击ADFS时我很快就会收到错误:

 MSIS9321: Received invalid OAuth request. The client 'LL957F23-D6C5-4D52-8A40-4F26B3408888' is forbidden to access the resource '<relying-party-url>' 
Run Code Online (Sandbox Code Playgroud)

我已经为ADFS 2016的预览版本找到了几个对此问题的响应,并且所有建议使用相同的解决方案 - 使用powershell设置依赖方并指定以下选项:

-IssuanceAuthorizationRules '=> issue(Type = "http://schemas.microsoft.com/authorization/claims/permit", Value = “true”);'
Run Code Online (Sandbox Code Playgroud)

但是,我已经采用了这些解决方案显示的确切代码,并尝试手动将访问控制策略设置为"允许每个人"(默认),或者使用-IssuanceAuthorizationRules设置,并且都没有解决此问题.

有没有人在Win 2016 RTM上有这个错误或ADFS体验的其他解决方案?

.net authentication adfs adal windows-server-2016

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

IdentityServer和ADFS

我正在尝试将IdentityServer设置为使用ADFS进行身份验证.流程将是:

用户 - >自定义应用程序 - > IS - > ADFS

我已经设置了几乎所有东西,但我仍然坚持IS和ADFS之间的通信.用户似乎在ADFS中成功登录,但是我收到错误:

ID4037:无法从以下安全密钥标识符'SecurityKeyIdentifier解析验证签名所需的密钥

当我回到IS.

显而易见,令牌签名证书在一方或另一方存在问题.我试图找到一些解释不同证书之间关系的文档,但没有成功.

现在我在IS中有自签名证书,签署令牌(使用IdentityServerOptions的SigningCertificate属性设置),我在ADFS中配置了AD证书来签署令牌.

有关如何正确地做到这一点的指导或建议吗?两者应该是相同的,还是应该配置其他东西以使其工作?

编辑 使用Fiddler我可以看到ADFS中的所有内容都运行良好,错误是将结果发布到IdentityServer时.在wresult param中发布的XML是:

<t:RequestSecurityTokenResponse xmlns:t="http://schemas.xmlsoap.org/ws/2005/02/trust">
  <t:Lifetime>
    <wsu:Created xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd">2017-06-20T12:25:31.148Z</wsu:Created>
    <wsu:Expires xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd">2017-06-20T13:25:31.148Z</wsu:Expires>
  </t:Lifetime>
  <wsp:AppliesTo xmlns:wsp="http://schemas.xmlsoap.org/ws/2004/09/policy">
    <wsa:EndpointReference xmlns:wsa="http://www.w3.org/2005/08/addressing">
      <wsa:Address>urn:identityServer</wsa:Address>
    </wsa:EndpointReference>
  </wsp:AppliesTo>
  <t:RequestedSecurityToken>
    <saml:Assertion MajorVersion="1" MinorVersion="1" AssertionID="_fd1a14cd-4d18-407b-97d4-9f9dfcacd29a" Issuer="http://ssosrv.mydomain.com/adfs/services/trust" IssueInstant="2017-06-20T12:25:31.148Z" xmlns:saml="urn:oasis:names:tc:SAML:1.0:assertion">
      <saml:Conditions NotBefore="2017-06-20T12:25:31.148Z" NotOnOrAfter="2017-06-20T13:25:31.148Z">
        <saml:AudienceRestrictionCondition>
          <saml:Audience>urn:identityServer</saml:Audience>
        </saml:AudienceRestrictionCondition>
      </saml:Conditions>
      <saml:AttributeStatement>
        <saml:Subject>
          <saml:NameIdentifier>user@mydomain.com</saml:NameIdentifier>
          <saml:SubjectConfirmation>
            <saml:ConfirmationMethod>urn:oasis:names:tc:SAML:1.0:cm:bearer</saml:ConfirmationMethod>
          </saml:SubjectConfirmation>
        </saml:Subject>
        <saml:Attribute AttributeName="emailaddress" AttributeNamespace="http://schemas.xmlsoap.org/ws/2005/05/identity/claims">
          <saml:AttributeValue>name.surname@mydomain.tv</saml:AttributeValue>
        </saml:Attribute>
        <saml:Attribute AttributeName="name" AttributeNamespace="http://schemas.xmlsoap.org/ws/2005/05/identity/claims">
          <saml:AttributeValue>Name Surname</saml:AttributeValue>
        </saml:Attribute>
        <saml:Attribute AttributeName="upn" AttributeNamespace="http://schemas.xmlsoap.org/ws/2005/05/identity/claims">
          <saml:AttributeValue>user@mydomain.com</saml:AttributeValue>
        </saml:Attribute>
      </saml:AttributeStatement>
      <saml:AuthenticationStatement AuthenticationMethod="urn:oasis:names:tc:SAML:2.0:ac:classes:PasswordProtectedTransport" AuthenticationInstant="2017-06-20T12:25:31.039Z">
        <saml:Subject>
          <saml:NameIdentifier>user@mydomain.com</saml:NameIdentifier>
          <saml:SubjectConfirmation>
            <saml:ConfirmationMethod>urn:oasis:names:tc:SAML:1.0:cm:bearer</saml:ConfirmationMethod> …
Run Code Online (Sandbox Code Playgroud)

adfs active-directory single-sign-on identityserver3

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

如何在PHP中使用simplesamlphp将office365配置为SSO的IDP

我们正在使用用于SSO的simplesamlphp与来自我们的SP(服务提供商)的所需IDP(身份提供商)进行连接,并对用户进行身份验证。

到目前为止,我们已经使用simplesamlphp将Google和ADFS服务作为IDP进行了SSO集成。现在,我们有了使用Office 365作为IDP进行SSO集成的新要求。有可能这样做吗?如果是,请给我有关操作方法的指导。

如果我错了请原谅

提前致谢

php adfs office365 simplesamlphp

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

Windows Server 2016 ADFS-与AWS Directory Service集成

我们想将WebSSO(使用单一凭据集进行单点登录)用于使用Windows Server 2016-ADFS活动目录联合服务)和AWS Directory Service的许多小型内部Web应用程序。我们已经在AWS账户中使用目录服务创建了一个域。执行成功的域加入 AWS Directory Service的操作后,我尝试使用Windows Server 2016 EC2实例上的服务器管理器工具安装和配置ADFS 。ADFS配置向导中的屏幕之一要求输入域管理员密码。AWS Directory Service创建的管理员用户似乎不是域管理员。因此,我无法在Windows EC2实例上配置ADFS。

https://www.virtuallyboring.com/how-to-setup-microsoft-active-directory-federation-services-adfs/

我想知道是否可以在AWS Directory Service中创建域管理员,其次可以使用SAML与AWS Directory Service一起实现ADFS吗?

从下面的AWS链接中,我认为默认的“ admin”用户与域管理员不同。

https://docs.aws.amazon.com/directoryservice/latest/admin-guide/ms_ad_getting_started_admin_account.html

谨感谢您收到有关ADFS与适用于Web应用程序的AWS Directory Service集成的任何输入。

注意:我在网上发现了用于使用Windows Active目录而非AWS目录服务安装/配置Windows ADFS的链接。我找到了以下链接,用于将ADFS与IAM用户的Active Directory集成在一起,但并没有太大帮助。

https://aws.amazon.com/blogs/security/enabling-federation-to-aws-using-windows-active-directory-adfs-and-saml-2-0/

我们希望将我们的Web应用程序与用于WebSSO的ADFS / AWS目录服务集成。

adfs active-directory amazon-web-services aws-directory-services

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

通过 OpenID Connect over ADFS 作为声明的用户组

我需要帮助弄清楚如何通过 OpenID Connect over ADFS (Windows Server 2016) 获取用户的分配组。我目前能够对用户进行身份验证并获取包括 access_token 在内的用户信息。当我检查 JWT 令牌时,我可以看到其中的所有默认声明。我想要的是将所有用户分配的系统组作为字符串数组添加到声明中,但我不知道如何实现这一点。ADFS 和 Windows Server 是一头野兽,Google 的所有搜索结果都没有将我引向正确的方向。我发现的所有文章都没什么用,因为它们的步骤要么不完整,要么如果您没有受过整个 ADFS-shebang 的教育,就很难理解。

我已经被这个问题困住了几天,需要一些帮助,希望有人知道这方面的知识。

到目前为止我所做的:

  1. 我向 ADFS 添加了一个应用程序组,其中包含一个“服务器应用程序”和一个“Web API”。
  2. 我添加了一个名为 Admin 的用户组并将其分配给名为 max 的用户。
  3. 我可以通过 ADFS 上的 OpenID Connect 登录并从 userinfo-endpoint 获取用户信息。
  4. 我已经能够解码 access_token 以访问声明。

我目前正在使用范围“openid”、“email”和“profile”进行身份验证。

adfs openid-connect

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