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

Pas*_*cal 5 openid openid-connect identityserver4

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

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

那不能解决!

那我还能做什么?

更新

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

mod*_*777 7

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

大多数客户端通过使用特殊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([""]);
    }
}
Run Code Online (Sandbox Code Playgroud)

编辑:由于您正在寻找官方来源并标记了 Identity Server 4,因此他们在其 Javascript 客户端示例中进行了双重重定向:http : //docs.identityserver.io/en/release/quickstarts/7_javascript_client.html