当前位置: 首页 > 知识库问答 >
问题:

Keycloak SSO-重定向太多

傅峻
2023-03-14

当使用Keycloak-js(版本:4.0.0)在Angular4中创建会话时,SSO不起作用

    null

响应URL:

http://localhost:3000/login/generic_oauth#state=wwxu1iywxtsevsxwcfzwhpz7opm63dbu5aombtmdjhe%3d&session_state=6ec8255b-ed4c-4399-951c-0241ce7bebad&code=eyjhbgcioijkaxiilcjlbmioijbmti4q0jdluhtmju2in0…lvjhqloacy0ftmxmoleyq.82msmzkn4hjbnokmezw-xkhurkyMH42RRG0O_AXTZVJYLOZWWA4X9V2DQAIBI2CuGKJLSINFJLLCN8LUK4PSWQOE2BP6WTMSZVIEU30UW8RXVQF46HSTF1DTXWZP-WOCCHWLAQATNQZD61U-AURLZ6ITY8DQXD3HWSCR1KJHFU8BJBR_PCNBT8LIGL_NKAGFCEODFPFOQGUY1ATQQLB.FSMESQYQKVWZBY1RW47A

尝试的选项:

  1. Angular4&Jenkins
  2. Angular4&Grafana

鉴于以下步骤是有效的

  1. 直接登录Grafana或Jenkins或KeyCloak
  2. 然后登录Angular 4,它可以工作
  const keycloakAuth: any = Keycloak({
            url: environment.KEYCLOAK_URL,
            realm: environment.KEYCLOAK_REALM,
            clientId: environment.KEYCLOAK_CLIENTID,
            'ssl-required': 'external',
            'public-client': true,
        });

共有1个答案

逑何平
2023-03-14

最后,我使用angull-oidc库(隐式流)https://github.com/manfredsteyer/angull-oauth2-oidc实现了SSO功能

 private configureWithNewConfigApi() {
 // URL of the SPA to redirect the user to after login
    this.oauthService.redirectUri = window.location.origin + "/index.html";

    // set the scope for the permissions the client should request
    this.oauthService.scope = "openid profile email";

    // set to true, to receive also an id_token via OpenId Connect (OIDC) in addition to the
    // OAuth2-based access_token
    this.oauthService.oidc = true;

    // Use setStorage to use sessionStorage or another implementation of the TS-type Storage
    // instead of localStorage
    this.oauthService.setStorage(sessionStorage);

    this.oauthService.clientId = "<<clientId>>";
    let url = 'https://<<keycloakhost>>:<<port>>/auth/realms/<<realmsname>>/.well-known/openid-configuration';
    this.oauthService.loadDiscoveryDocument(url).then((doc) => {
        // This method just tries to parse the token within the url when
        // the auth-server redirects the user back to the web-app
        // It dosn't initiate the login
        this.oauthService.tryLogin({});      
        console.debug('discovery succeeded', doc);

    });

感谢Jan Garag的建议

 类似资料:
  • 我正在使用Thymeleaf开发一个简单的登录表单 我试图通过将以下属性放入我的应用程序来禁用默认的安全登录屏幕。属性: 并将以下配置添加到我的SecurityConfig中,以便除"/登录"和"/资源"之外的任何URL都将获得身份验证: 我的LoginController是明确的: 有人知道为什么会这样吗?

  • 当使用自定义重定向URL配置Spring security时,该URL使用基本URI模板变量,如下所示:https://docs.Spring.io/Spring-security/site/docs/5.2.12.release/reference/html/oauth2.html#oauth2client-auth-code-redirect-uri 应用程序进入了太多重定向的循环。 此配置工

  • 我使用Laravel 5.4的项目和场景是,如果没有任何创建然后在登录重定向到页面。 下面是我的路线页编码 目录结构是 下面是我的code 它重定向了太多次,我收到错误消息说。 我在这里做错了什么??

  • 这是我的应用程序属性文件: 这是我的配置类: 我做错了什么? 谢谢。

  • 问题内容: 我使用以下代码发出了一个简单的URL请求: 但是在最后一行,我收到“重定向次数过多错误”。如果说我的“网页”变量是google.com,那么它可以正常工作,但是当我尝试使用我的servlet的URL时,它将失败。看来我可以用以下方法调整重定向之后的次数(默认为20): 但是当我将其提高到100时,抛出错误肯定需要更长的时间,所以我知道它正在尝试。但是,指向我的servlet的URL在(

  • 我用下面的代码发出一个简单的URL请求: 但在最后一行,我得到了“重定向太多次错误”。如果我的“网页”变量是谷歌。com,然后它工作正常,但当我尝试使用servlet的URL时,它失败了。似乎我可以通过以下方法调整它遵循重定向的次数(默认值为20): 但是当我把它调到,比如说,100时,肯定需要更长的时间来抛出错误,所以我知道它在努力。然而,我的servlet的网址在(任何)浏览器中都能正常工作,