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

How can I redirect after login to the url before without registering all client side routes at my IdP

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

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

这不是解决方案!

那我还能做什么呢?

更新

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

不知道你用的是哪个流程。我将假定隐式流程,但可以调整此解决方案。

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

这是一个使用 oidc-client 的随机 angular 示例:

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 客户端示例中进行了双重重定向: http://docs.identityserver.io/en/release/quickstarts/7_javascript_client.html