通常我必须在我的IdP上注册授权回调url / redirect_url。
但是如果redirect_url总是用户试图在未授权状态下激活的那个,那就意味着我必须在我的IdP上注册所有1000条可能的路由。
这不是一个解决方案!
那么我还能做什么呢?
UPDATE
我使用基于javascript的应用程序的隐式流程。
我不知道你正在使用哪种流程。我将假设隐含流程,但可以调整此解决方案。
大多数客户通过特殊的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