如何在登录到url之前重定向,而无需在我的IdP上注册所有客户端路由

问题描述 投票:1回答:1

通常我必须在我的IdP上注册授权回调url / redirect_url。

但是如果redirect_url总是用户试图在未授权状态下激活的那个,那就意味着我必须在我的IdP上注册所有1000条可能的路由。

这不是一个解决方案!

那么我还能做什么呢?

UPDATE

我使用基于javascript的应用程序的隐式流程。

openid openid-connect identityserver4
1个回答
2
投票

我不知道你正在使用哪种流程。我将假设隐含流程,但可以调整此解决方案。

大多数客户通过特殊的http://mypage/login-callback路线来解决这个问题。所以你只注册这条路线为redirect_uri。在重定向到OIDC身份验证端点之前,您“保存”用户请求的路由。通过设置cookie或将其存储在sessionstorage上。一旦重定向到login-callback,您将提取令牌并检查cookie / localstorage密钥,然后执行另一次重定向。

这是使用oidc-client的随机角度示例:

async completeAuthenticationAsync() {
    // complete login, get tokens etc...
    this.user = await this.manager.signinRedirectCallback();
    this.emitState();
    // check for previously saved URI
    var redirect = sessionStorage.getItem("auth:redirect");
    if(redirect){
        // redirect to route - this is using the angular router
        sessionStorage.removeItem("auth:redirect")
        this.router.navigate([redirect]);
    }
    else {
        // redirect to start page
        this.router.navigate([""]);
    }
}

编辑:由于您正在寻找官方来源并且您标记了Identity Server 4,因此他们在其Javascript客户端示例中执行双重定向:qazxsw poi

© www.soinside.com 2019 - 2024. All rights reserved.