Identityserver4 OIDC隐式流-重定向uri长度

Identityserver4 OIDC隐式流-重定向uri长度,identityserver4,openid-connect,oidc-client-js,Identityserver4,Openid Connect,Oidc Client Js,我将OIDC与响应类型为“id\u token”的隐式代码流一起使用。一切都很好,但注意到带有访问令牌、id_令牌、作用域和会话状态+域名的回调url已经包含2033个字符。我正在进行的项目需要支持IE10,据我所知,URL限制为2048个字符。我不担心回调url的长度会危险地接近这个限制。 对于这样的案例,建议采用什么方法?我是否可以将响应类型更改为“令牌”,然后从用户信息端点请求用户信息?或者我应该做些什么来减小回调url的大小,尝试减少access\u令牌和id\u令牌中的信息?第三个选项

我将OIDC与响应类型为“id\u token”的隐式代码流一起使用。一切都很好,但注意到带有访问令牌、id_令牌、作用域和会话状态+域名的回调url已经包含2033个字符。我正在进行的项目需要支持IE10,据我所知,URL限制为2048个字符。我不担心回调url的长度会危险地接近这个限制。 对于这样的案例,建议采用什么方法?我是否可以将响应类型更改为“令牌”,然后从用户信息端点请求用户信息?或者我应该做些什么来减小回调url的大小,尝试减少access\u令牌和id\u令牌中的信息?第三个选项似乎是引用令牌,但我不担心额外调用STS的开销

在项目中,我使用oidc客户端js和IdentityServer4


谢谢

请尽量使代币变小。少索赔

默认情况下,在访问令牌可用的情况下,IdentityServer会从标识令牌中删除所有其他声明(除非您覆盖此行为)

正如你所说的,引用标记是另一种处理方法。通过在API中间件中启用缓存,您可以保持较小的开销


IE是瘟疫。

类似的问题在这里,但与Electron应用程序类似。Electron应用程序需要调用受保护的API。API需要知道调用用户的身份。我尝试将响应类型从“id_令牌”更改为“令牌”,但IdentityServer身份验证尝试现在会导致:

用户界面:

抱歉,出现错误:无效的\u作用域

调试输出:

对令牌响应类型的请求只能包括资源作用域,但不能包括标识作用域

Javascript配置(从Dom的优秀Javascript示例客户端借用):


为什么使用重定向uri localhost:5003?您在生产中使用什么来获得该值?之所以使用Thx.localhost,是因为客户端是电子应用程序,而不是传统的Web服务器客户端。您可以尝试从隐式流切换到身份验证代码流。身份验证代码流涉及到一个额外的步骤,即将较小的身份验证代码交换为完整的JWT,但您不必担心IE中的URL重定向限制。
var config = {
    authority: "http://localhost:5000",
    client_id: "js",
    redirect_uri: "http://localhost:5003/callback.html",
    response_type: "token",
    scope:"openid profile TestApi",
    post_logout_redirect_uri : "http://localhost:5003/index.html",
};