我使用OIDC和隐式代码流,响应类型为" id_token token"。一切都很好,但注意到具有访问令牌,id_token,范围和session_state +域名的回调网址已经包含2033个字符。我正在开发的项目需要支持IE 10,据我所知,有一个限制URL为2048个字符。我有点害怕回调网址的长度危险地适应这个限制。 这种情况的建议方法是什么?我可以将响应类型更改为"令牌"然后从用户信息端点请求用户信息?或者我应该做些什么来减少回调网址的大小,尝试减少access_token和id_token中的信息?第三种选择似乎是参考令牌,但我对STS的一次额外调用几乎不担心开销。
在项目中,我使用oidc-client-js和IdentityServer4。
由于
答案 0 :(得分:2)
尽量保持令牌尽可能小。减少索赔。
默认情况下,IdentityServer会在访问令牌可用的情况下从身份令牌中删除所有其他声明(除非您覆盖此行为)。
参考标记是另一种处理方式,就像你说的那样。通过在API中间件中启用缓存,可以减少开销。
IE是瘟疫。
答案 1 :(得分:0)
此处类似的问题,但与电子应用程序。 Electron app需要调用受保护的API。 API需要知道主叫用户的身份。我尝试将响应类型从“id_token token”更改为“token”,但IdentityServer auth尝试现在导致:
UI:
抱歉,出现了错误:invalid_scope
调试输出:
令牌响应类型的请求只能包括资源范围,但不包括身份范围
Javascript配置(借用Dom的优秀Javascript示例客户端):
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",
};