JWT Token - проблема авторизации, конвертирующая сеанс в токен с использованием ServiceStack - PullRequest
0 голосов
/ 24 апреля 2019

Проблема:

Я получаю 401 Проблемы с авторизацией при преобразовании сеанса в токен (ConvertSessionToToken) при публикации на нашем сервере аутентификации.

Фон:

  • API и сервер аутентификации: ServiceStack v5.5 .NET Core - обслуживается с https://{{confidential}}.azurewebsite.net
  • Пользовательский интерфейс: Nuxt подается с http://localhost:3000/

ServiceStack API - Auth Setup

  Plugins.Add(new AuthFeature(() => new CustomUserSession(), new IAuthProvider[] {
                new JwtAuthProvider(AppSettings)
                {
                    RequireSecureConnection = false,
                    IncludeJwtInConvertSessionToTokenResponse = true
                },
                new CredentialsAuthProvider(), //HTML Form post of UserName/Password credentials
            }));

Также включен CORS

  Plugins.Add(new CorsFeature(
            allowOriginWhitelist: new[] {
                "http://localhost:3000" },
            allowCredentials: true,
            allowedHeaders: "Content-Type, Allow, Authorization",
            maxAge: 60 * 60)); //Cache OPTIONS permissions

UI - gateway.js

const BaseUrl = "https://acpdapi.azurewebsites.net/"; // .NET Core App Server on Azure

export const client = new JsonServiceClient(BaseUrl);

export const getSessionInfo = async () => {
  try {
    //Converts Session to JWT Token Cookie
    // Issue: 401 Auth - requested resource requires authentication
    const authResponse = await client.post(new ConvertSessionToToken());
    client.bearerToken = authResponse.accessToken;

    //Remove unnecessary JWT from HTTP Headers so only JWT Cookie is used
    client.headers.delete("Authorization");
    return response;
  } catch (e) {
    return null;
  }
};

export const logout = async () => {
  const request = new Authenticate();
  request.provider = "logout";
  // await getSessionInfo();
  await client.post(request);
};

export const login = async (provider, userName, password) => {
  console.log("authenticating...");
  await logout();

  const request = new Authenticate();
  request.provider = provider;
  request.userName = userName;
  request.password = password;
  request.useTokenCookie = true;

  var response = await client.post(request);
  // happy days - I am getting successful token 
  await getSessionInfo();
  //return response;
  return `/${provider}`;
};

Вопрос

Я, должно быть, упускаю что-то очень очевидное.При обслуживании .NET Core API с локального сервера (т. Е. http://localhost:5000 или https: /// localhost: 5001 ) у меня не возникает проблем с сообщением.

Таким образом, что такоепроблема - почему у меня возникает проблема аутентификации при поиске ConvertSessionToToken - когда я успешно прошел аутентификацию.

Спасибо

...