Проверьте токен Identity Server в NodeJS API - PullRequest
0 голосов
/ 29 апреля 2020

У меня есть токен, который был выдан Identity Server (IDP), а затем приложение NodeJS, и я хочу проверить этот токен в NodeJS API?

Я пытаюсь использовать jose (на основе this ), но я не знал, как его использовать. Возможно ли это сделать?

ПРИМЕЧАНИЕ:

В моем ASP NET CORE API, вот как клиент, я должен добавить только следующую команду в startup class чтобы подтвердить мой API?

services.AddAuthentication(IdentityServerAuthenticationDefaults.AuthenticationScheme)
   .AddIdentityServerAuthentication(options =>
     {
       // base-address of your identityserver
       options.Authority = "http://localhost:5000";
       options.RequireHttpsMetadata = false;
       // name of the API resource
       options.ApiName = "api1";
       // options.ApiSecret = "xxx";
});

В моем NodeJS API, который как клиент, как веб-API выше Что мне делать?

ОБНОВЛЕНИЕ:

I посетил эту статью но я не помог мне! Identity Server 4 для NodeJS API

1 Ответ

3 голосов
/ 29 апреля 2020

Если вы хотите только проверить свой токен, вы можете использовать следующий пакет :

npm install token-introspection --save

Этот пакет настроен с учетными данными конечной точки и клиента, и функция возвращается. Вызов этой функции с токеном и необязательным token_type_hint вернет Promise.

const tokenIntrospection = require('token-introspection')({
    endpoint: 'https://example.com/introspect',
    client_id: '<Client ID>',
    client_secret: '<Client Secret>',
});

tokenIntrospection(token).then(console.log).catch(console.warn);

Пример:

Вот промежуточное ПО для проверки токена:

module.exports = (req, res, next) => {

    const token = "wEvxS0y2TkvCjLpKP33oGTK0BcKUb6MHt1u3AeMu8h4"; // get your token from your request 

    const tokenIntrospection = require('token-introspection')({
        endpoint: 'http://localhost:5000/connect/introspect',
        client_id: 'api1',
        client_secret: 'apisecret',
    });
    tokenIntrospection(token).then(result => {
        console.log(result);
        next();
    }).catch(console.warn);
}

тогда вы можете использовать его, как показано ниже:

const auth = require('./atuh')

app.get('/', auth, (req, res, next) => {
    res.send("Hi");
})
...