我正在使用identityserver v3在基于angularjs的Web应用程序中验证我的用户。因此,我从授权端点请求一个id_token,它返回我想要的内容(id_token和access_token ...)。 openid specification表示必须由客户端验证id_token。 我怎样才能在javascript中实现这一点。我可以在.net或java中找到一些实现,但是在javascript中找不到任何实现。
有人可以为我提供一个用javascript完成工作的库吗?
最好的方法是将令牌作为参数并验证它:sthg like:
mylib.validate(id_token);
某个服务器提供端点来验证它,但我真的想在客户端验证它
答案 0 :(得分:0)
这是我做的:
我们需要使用 JSWS
从here : JSJWS下载库。我已经下载了3.0.2版本。
index.html 中的,您必须引用上面下载的jws-3.0.js,json-sans-eval.js文件 (json-sans-eval位于[jsjws-3.0.2 \ ext]目录中。(更多相关信息可在此处找到) json-sans-eval网站)
如果您运行代码,则会出现以下异常: b64utohex未定义
您需要引用另一个库。事实上,我发现相关项目 jsrsasign 具有所需的库。 你可以在这里下载一个版本:https://github.com/kjur/jsrsasign/tags/ 我下载了4.7.0版本并取出了jsrsasign-4.7.0-all-min.js文件并添加了引用脚本。
现在,您可以使用以下代码完成所有必要的文件:
function validateToken(id_token, cert) {
var jws = new KJUR.jws.JWS();
var result = 0;
result = jws.verifyJWSByPemX509Cert(id_token, cert);
if (result) {
result = JSON.parse(jws.parsedJWS.payloadS);
} else {
result = 'unable to verify token';
}
return result;
}
可以找到here
的长篇故事