Используйте выборку с Identity Server 4

Как использовать fetch с IdentityServer4 для получения токена JWT при использовании потока паролей владельца ресурса? (что не рекомендуется в большинстве случаев).

Даже если мне нужно использовать неявный поток, я хочу использовать этот поток, потому что он более удобен в моей ситуации для моего спа-приложения. Во-первых, вы найдете здесь полезную информацию для реализации вашего решения:

Но как использовать [fetch-api] для получения токена от IdentityServer 4?

    const form = new FormData();
    form.append('grant_type', 'password');
    form.append('username', username);
    form.append('password', password);
    if (this._settings.scope) {
        form.append('scope', this._settings.scope);
    }
    form.append('client_id', this._settings.clientId);
    if (this._settings.clientSecret) {
        form.append('client_secret', this._settings.clientSecret);
    }

    var options = {
        method: 'POST',
        headers: {
           'Content-Type': 'multipart/form-data'
        },
        rejectUnauthorized: false, // when use local unverified certificate
        body: form
    };

Я должен получить токен JWT в ответ, но я получаю http 500 Error. "Внутренняя ошибка сервера"

Если я прослеживаю заголовки HTTP с помощью fiddler, я получаю следующий результат:

POST http://127.0.0.1:8888/ HTTP/1.1
content-type: multipart/form-data
accept-encoding: gzip,deflate
user-agent: node-fetch/1.0 (+https://github.com/bitinn/node-fetch)
connection: close
accept: */*
content-length: 896
Host: 127.0.0.1:8888

1 ответ

Решение

Как я уже упоминал в моем предыдущем комментарии: если вы хотите использовать Fetch для отправки авторизованного запроса с данными формы, вы не должны указывать тип содержимого в заголовке. поскольку fetch автоматически заполнит его правильным значением ("multipart/form-data") и добавит динамически сгенерированную границу содержимого. Также обратите внимание, что вы можете использовать URLSearchParams, если предпочитаете использовать метод содержимого типа application/x-www-form-urlencoded.

Другие вопросы по тегам