我们目前正在使用内部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解决方案:
从3.我会得出结论,4.不可能,但这只是旧的信息,现在不再有效?
感谢您提供任何有用的见解:)
我已经在使用ACS,并且很乐意将Azure Active Directory设置为身份提供者.
我似乎无法找到从WAAD获取ADFS信息的任何方法,但我猜它还处于早期......
有谁知道这是否可能?
乔
我正在向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) 我们的 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) 我将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:
refresh_token?我以前有一个富客户端使用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体验的其他解决方案?
我正在尝试将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) 我们正在使用用于SSO的simplesamlphp与来自我们的SP(服务提供商)的所需IDP(身份提供商)进行连接,并对用户进行身份验证。
到目前为止,我们已经使用simplesamlphp将Google和ADFS服务作为IDP进行了SSO集成。现在,我们有了使用Office 365作为IDP进行SSO集成的新要求。有可能这样做吗?如果是,请给我有关操作方法的指导。
如果我错了请原谅
提前致谢
我们想将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”用户与域管理员不同。
谨感谢您收到有关ADFS与适用于Web应用程序的AWS Directory Service集成的任何输入。
注意:我在网上发现了用于使用Windows Active目录而非AWS目录服务安装/配置Windows ADFS的链接。我找到了以下链接,用于将ADFS与IAM用户的Active Directory集成在一起,但并没有太大帮助。
我们希望将我们的Web应用程序与用于WebSSO的ADFS / AWS目录服务集成。
adfs active-directory amazon-web-services aws-directory-services
我需要帮助弄清楚如何通过 OpenID Connect over ADFS (Windows Server 2016) 获取用户的分配组。我目前能够对用户进行身份验证并获取包括 access_token 在内的用户信息。当我检查 JWT 令牌时,我可以看到其中的所有默认声明。我想要的是将所有用户分配的系统组作为字符串数组添加到声明中,但我不知道如何实现这一点。ADFS 和 Windows Server 是一头野兽,Google 的所有搜索结果都没有将我引向正确的方向。我发现的所有文章都没什么用,因为它们的步骤要么不完整,要么如果您没有受过整个 ADFS-shebang 的教育,就很难理解。
我已经被这个问题困住了几天,需要一些帮助,希望有人知道这方面的知识。
到目前为止我所做的:
我目前正在使用范围“openid”、“email”和“profile”进行身份验证。