openid-client wso2 401 Несанкционированный - PullRequest
0 голосов
/ 05 октября 2019

Я пытаюсь использовать node-openid-client для получения кода доступа с сервера идентификации wso2. Как я могу отправить учетные данные для аутентификации?

'use strict';

const { Issuer } = require('openid-client');
Issuer.discover('https://localhost:9443/oauth2/oidcdiscovery') // => Promise
  .then(function (wso2Issuer) {
    console.log('Discovered wso2Issuer %s', wso2Issuer);
  });

Мой результат:

node:23516) UnhandledPromiseRejectionWarning: AggregateError:
    OPError: expected 200 OK, got: 401 Unauthorized

1 Ответ

1 голос
/ 07 октября 2019

Я предполагаю, что этот Issuer.discover метод пытается получить доступ к конечной точке /.well-known. Причина, по которой вы получаете 401 Unauthorized, заключается в том, что в WSO2 IS 5.7.0 эта конечная точка защищена по умолчанию.

Существует два решения вашей проблемы

  1. Отправка авторизации: Базовый заголовок с учетными данными пользователя в кодировке base64. т.е.: Authorization: Basic base64encoded(username:password)
  2. Сделать конечную точку небезопасной.

Поскольку это конечная точка обнаружения, я бы сказал, что нужно выбрать вариант 2.

  • Выможет сделать эту конечную точку небезопасной, выполнив следующие действия;Откройте файл identity.xml внутри <IS-HOME>/repository/conf/identity/ и найдите тег <ResourceAccessControl>.
  • Внутри этого тега вы можете найти ресурс, соответствующий <Resource context="(.*)/.well-known(.*)" secured="true" http-method="all"/>, установленный на false. т.е.: <Resource context="(.*)/.well-known(.*)" secured="false" http-method="all"/>

Вам нужно будет перезапустить сервер, чтобы изменение конфигурации вступило в силу.

...