2

Я использую identityserver v3 для аутентификации пользователей в веб-приложении на основе углов. поэтому я запрашиваю id_token из конечной точки авторизации, которая возвращает мне то, что я хочу (id_token и access_token ...). В openid specification указано, что идентификатор id_token должен быть проверен клиентом. Как я могу достичь этого в javascript. Я мог найти некоторую реализацию в .net или java, но не смог найти в javascript.Как я могу проверить openId id_token в javascript

Может ли кто-нибудь предоставить мне библиотеку, которая выполняет эту работу в javascript?

оптимальный будет метод, который принимает маркер, как пары и проверить его: sthg как:

mylib.validate(id_token); 

некоторые сервера предлагают конечную точку для проверки, но я действительно хотел бы, чтобы проверить его на клиенте

+0

Я только что нашел эту библиотеку из thinktecture и думаю, что это делает что я хочу. Но задайтесь вопросом, нормально ли использовать его, даже если мы используем другой сервер openid connect: https://raw.githubusercontent.com/IdentityServer/IdentityServer3.Samples/master/source/Clients/JavaScriptImplicitClient/oidc.js –

+1

Имеет ли [это] (http://kjur.github.io/jsjws/) помощь? Я нашел его на сайте openid connect под списком [libraries] (http://openid.net/developers/libraries/). – pepo

ответ

0

Вот что я сделал:

мы должны использовать JSWS

скачать библиотеки от here : JSJWS. Я загрузил версию 3.0.2.

в вашем index.html, вы должны ссылаться на Jws-3.0.js, в JSON-без-eval.js файл, который вы скачали выше (JSON-без-Eval расположен в [jsjws-3.0. . 2 \ доб] каталог (подробнее о ней можно найти здесь JSON-Санс-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

+0

Проверка id_token на клиенте не имеет смысла. Он должен быть на сервере. – serkan