标签: single-sign-on

如何在 Cognito Hosted UI 中启用 SAML 联合而不公布他们的客户列表?

我正在构建一个企业应用程序并使用 Cognito Hosted UI 解决方案联合登录,人们可以使用任何电子邮件单独注册,但他们也可能为与我们签署企业协议并使用 SSO 的公司工作。

所需的工作流程是他们输入他们的登录电子邮件,然后根据我们的 SAML 单点登录提供商列表进行检查,如果他们匹配使用 SSO 的企业客户端,他们将被发送到适当的联合页面;如果它们不匹配,它们将被带到通用登录。

到目前为止,我已经成功地使用托管 UI 和关键idpIdentifier参数成功地创建了所需的行为。以下 React 代码总结了其工作原理:

    hostedUILogin() {
        const idpIdentifier = this.state.email.split("@")[1];

        let url = `https://${domain}/oauth2/authorize?response_type=code&client_id=${clientId}&redirect_uri=${redirectSignIn}`;

        if (idpIdentifier) {
            url += `&idp_identifier=${idpIdentifier}`;
        }

        window.location.assign(url);

    }
Run Code Online (Sandbox Code Playgroud)

这会产生所需的效果。当有人使用以“@corporatecustomer.com”结尾的电子邮件地址登录时,他们将被带到公司联盟的 SSO 页面。当有人使用“@gmail.com”登录时,他们会被带到 Cognito Hosted UI。

不幸的是,托管 UI 似乎无能为力,只能在左侧展示我们的客户列表。

截屏

我无法在文档或教程中发现使用 Cognito 托管 UI 的任何方式,而无需在左侧宣传所有可用的 SAML 提供商,从而泄露我们的客户列表。

我曾尝试在 App Client 配置中移除此托管 UI 应用程序的 IDP,但随后它不再通过 idp_identifier 成功捕获。

identity single-sign-on amazon-cognito

5
推荐指数
1
解决办法
234
查看次数

Google SAML SSO - 登录个人 Google 帐户时出现 403 app_not_configured_for_user 错误

我正在使用 Google/G Suite 为我们的应用程序进行 SAML SSO 集成。我们的客户在他们公司的 G Suite 管理设置中配置我们的 SAML 应用程序。在大多数情况下,集成工作正常:

  • 假设您尚未登录 Google 帐户。您启动 SSO 过程。系统会提示您登录公司的 Google 帐户,并且 SSO 可以正常工作。

尚未登录时的谷歌帐户提示

  • 假设您已经登录到您的公司 Google 帐户您的个人 Google 帐户。您启动 SSO 过程。您会看到一个帐户选择器。如果您选择您的公司 Google 帐户,SSO 将正常工作。 登录多个帐户时,帐户选择器提示

但是,在这种情况下,SSO 会失败:

  • 假设您只登录了您的个人 Google 帐户。Google 不会显示帐户选择器。相反,您会立即收到 403 错误:“错误:app_not_configured_for_user。”

403 错误,如果只登录了错误的帐户

这给我们的用户带来了非常混乱的体验。您目前只登录了一个不是您公司的 google 帐户的 google 帐户,这是很常见的。此外,错误页面是不透明的——用户不清楚他们做错了什么。

有没有办法始终显示帐户选择器?例如,我们可以向/o/saml2/idpurl 或 SAML AuthnRequest添加任何参数吗?(例如,我们尝试在 AuthnRequest 中设置ForceAuthn和添加一个<saml:Subject>块,但似乎 Google 的 SAML 也不支持。)

或者有没有办法让我们的应用程序在错误时获得回调,以便我们可以显示更有意义的错误消息?

(我联系了 G Suite 支持,他们说要在 Stack Overflow 上问我们的问题。感谢您的帮助!)

google-api saml single-sign-on saml-2.0 google-sso

5
推荐指数
1
解决办法
8634
查看次数

我可以自己设置 KEYCLOAK_IDENTITY cookie吗

我将 KeyCloak 与 OpenID Connect 一起使用。

我在 KeyCloak 的同一个域上有一个应用程序。此应用程序有一个端点,它将授权代码作为参数,并在响应中设置 'KEYCLOAK_IDENTITY' cookie 以启用 SSO。

它有效,但这样做安全吗?

编辑:我的问题是关于 cookie。我解释“为什么”只是为了提供一些上下文。

编辑 2:对于想要使用此解决方案的人,我真的很关心 keycloak 社区......即使有 100 的赏金,我的问题也没有答案。

我为什么要这样做:

我需要在外部网站(使用它自己的身份验证提供商,我们称之为“站点 A”)和由 Keycloak 处理的应用程序世界(我们称之为“站点 K”)之间设置 SSO。

作为站点 A 的经过身份验证的用户,如果我想在不登录的情况下导航到站点 K(即使用 SSO),我需要在 KeyCloak 上登录(授权代码流将完成它的工作)。

但是,为了登录 KeyCloak,我需要:

  1. 获取授权码
  2. 将此代码交换为将添加到 KeyCloak 域的 cookie (KEYCLOAK_IDENTITY) 的令牌

1. OIDC 很棘手,但这是可能的。

2. 使用 OIDC 是不可能的:KeyCloak 中没有端点可以获取授权码并设置 cookie,而无需在正文中返回令牌。

所以,我的解决方案是添加一个网关,在与 KeyCloak 相同的域上,它将从 KeyCloak 获取令牌并将其添加到 KEYCLOAK_IDENTITY cookie ......这很棘手,但它确实有效。我的问题是:它安全吗?

如果不清楚:请随时提问!

oauth single-sign-on oauth-2.0 openid-connect keycloak

5
推荐指数
1
解决办法
2856
查看次数

SAP SSO 身份验证作为休息服务

我有一个SAP Java托管的遗留应用程序,neo platform它使用form based SSO authentication. 我想要consume this service from rest client like Postman现在不可能的。我有哪些选择?

是否有可能我在当前服务之上编写一个服务并调用“原始”服务。但同样,如何将 SSO 凭据传递给“原始”服务

rest sap single-sign-on

5
推荐指数
0
解决办法
88
查看次数

如何在 React App 中使用 Active Directory 实现 SSO 身份验证?

我正在尝试使用 React 为已经拥有使用 AD(Active Directory)实现的 SSO(单点登录)系统的组织创建前端应用程序,我希望他们的员工能够使用相同的方式登录我的应用程序证书。

有没有办法只使用 React(如果是,请如何!)或者我应该使用另一种技术,例如 NodeJs。

azure single-sign-on node.js reactjs azure-active-directory

5
推荐指数
1
解决办法
7683
查看次数

Flutter WebView 保留访问令牌

我正在构建一个 Flutter 应用程序,它将在应用程序中的某个时刻打开一个 web 视图,访问我的 SSO 应用程序后面的网页。

截至目前,当用户使用flutter_AppAuth插件([ https://pub.dev/packages/flutter_appauth][1])登录时,用户将获得一个存储在应用程序中的令牌。

当用户单击安全站点的链接时,应用程序会在 Web 视图 ( https://pub.dev/packages/flutter_webview_plugin ) 中打开 URL ,并将令牌放置在标头中,并被验证为已登录的用户我的问题曾经出现在此页面上,即使之前已接受令牌,单击网页上的另一个链接也会强制我进入 sso 登录页面。

我的问题是如何确保令牌被存储并在用户浏览网页时使用以确保他们不必再次登录?

token webview single-sign-on flutter flutterwebviewplugin

5
推荐指数
0
解决办法
889
查看次数

OAuth2FeignRequestInterceptor 类在 Spring Boot 2.3 中已弃用

在我们最后的伪装客户端安全配置中,我们有这个 Bean:

    @Bean
    public RequestInterceptor oauth2FeignRequestInterceptor(
            ClientCredentialsResourceDetails oauth2RemoteResource) {
        return new OAuth2FeignRequestInterceptor(
                new DefaultOAuth2ClientContext(),
                oauth2RemoteResource
        );
    }
Run Code Online (Sandbox Code Playgroud)

在 2.3 spring 版本中OAuth2FeignRequestInterceptor已弃用!但是我们找不到新的。

有人知道吗?

single-sign-on spring-boot spring-security-oauth2 openfeign

5
推荐指数
1
解决办法
2846
查看次数

使用访问或 ID 令牌/令牌交换建立 SSO/设置 cookie

我允许登录外部应用程序的用户通过 Keycloak 的身份代理和外部到内部令牌交换使用他们的访问令牌跳转到我们的应用程序。

现在,我想在我们的应用程序中的嵌入式 JxBrowser 中建立一个 SSO 会话,类似于常规浏览器登录流程,其中在浏览器中设置了三个 cookie:AUTH_SESSION、KEYCLOAK_SESSION(_LEGACY) 和 KEYCLOAK_IDENTITY(_LEGACY)。

KEYCLOAK_IDENTITY 包含一个Serialized-ID类似于 ID 标记的类型标记。

是否可以使用交换的(内部)访问和/或 ID 令牌创建 KEYCLOAK_IDENTITY cookie,并且如果其他两个 cookie 也已正确创建,这是否会建立有效的 SSO 会话?

基本上我所缺少的是如何获取或创建Serialized-ID类型令牌。

cookies single-sign-on keycloak keycloak-services token-exchange

5
推荐指数
1
解决办法
1608
查看次数

chrome 更新后,SSO 登录在 iframe 中不起作用

我有一个应用程序,其中列出了不同的内部应用程序和第三方应用程序。有一些应用程序在我的应用程序中的 iframe 中打开,其中一些应用程序启用了 SSO。最近在 chrome 更新到版本 84.0.4147.125 后,SSO 登录停止对 iframe 中的应用程序工作,在新的浏览器窗口中打开时它工作正常。

除了 Chrome 之外的任何其他浏览器都不会发生这种行为,有人可以帮助我吗?

iframe google-chrome single-sign-on

5
推荐指数
1
解决办法
5380
查看次数

Edge Chromium 不会将 SAML 数据通过 http 发布到 IEMode 用户访问 URL

我们的网站是需要IEMode边缘铬和我们的用户使用SSO。当他们从 SSO 登录 URL 登录时,他们的 Edge Chromium 浏览器按预期在 IEMode 中打开我们的网站(用户访问 URL),但他们在身份验证中遇到错误。

从我们用户的 SSO 登录中,我们的网站接收的请求类型是 GET,因此我们收到错误“无法通过 HTTP 发布接收 SAML 响应”,我们期望通过 http 发布 SAML 数据。开发人员工具不适用于 IEMode,因此跟踪在 IEMode 页面加载之前停止。

按照https://docs.microsoft.com/en-us/deployedge/edge-ie-mode-sitelist#configure-neutral-sites 的指示,我们尝试将 SSO 登录域包含到 EMIE 站点列表中为None但我们仍然得到相同的结果。如果我们将打开方式更改为IE11(与我们网站的相同),它就可以工作。这不是我们的用户想要使用的选项(将登录域设置为在 IE11 中打开),因为我们的用户有其他使用 SSO 的应用程序并且要求不在 IEmode 中。

是否有我们可以更改的标头或 IIS 设置,或者我们可以修改的其他 Edge Chromium 浏览器设置甚至注册表设置,以解决此 Edge Chromium 到 IEMode SSO 问题?

saml single-sign-on internet-explorer-11 microsoft-edge

5
推荐指数
1
解决办法
568
查看次数