Сбой Spring Cloud Upgrade с Edgware (Spring boot 1.x) до Greenwich (Spring boot 2.x) - PullRequest
0 голосов
/ 30 января 2019

Обновление Spring Cloud с Edgware (Spring boot 1.x) до Finchely / Greenwich (Spring boot 2.x) завершается неудачно после успешной аутентификации в шлюзе, но на веб-странице отображается 403 доступа, запрещенных.Я обновляю Spring Cloud и могу видеть некоторые изменения артефактов в последней версии Spring Cloud, и я обновляю их, но, к сожалению, после входа в приложение оно выдает ошибку 403 «Отказано в доступе». Эта ошибка не выдается, если я использую Edgware (Spring boot 1.x) версия.

При отладке кода, который я обнаружил после передачи параметров для класса «UsernamePasswordAuthenticationToken», он входит в классы springframwork и никогда не выходит из библиотек Spring.

@ Service (value = "AuthProvider") открытый финальный класс AuthProvider реализует AuthenticationProvider {private static final Logger logger = LoggerFactory.getLogger (AuthProvider.class);

@Autowired
UserAuthenticationService userAuthenticationService;

@Override
public Authentication authenticate(Authentication authentication)throws AuthenticationException
{
    UsernamePasswordAuthenticationToken userToken = (UsernamePasswordAuthenticationToken) authentication;

    List<String> roles = userAuthenticationService.authenticate(userToken.getName(),
            userToken.getCredentials().toString());

    if (roles.size() > 1 && roles.get(0).equals("FINE"))
    {
        Collection<GrantedAuthority> authorities = new ArrayList<>();
        for (String role : roles.subList(1, roles.size()))
        {
            authorities.add(new SimpleGrantedAuthority(role));
        }
        return new UsernamePasswordAuthenticationToken(userToken.getName(), userToken.getCredentials(),
                authorities); --> **at this point it enters into spring libraries and it never comes out of it.**

    }
    // User has an FINE in the first position of the list,there are no roles
    // (size = 1)
    else if (roles.size() == 1 && roles.get(0).equals("FINE"))
    {
        JSONObject json = new JSONObject();
        try
        {
            json.put("errorCode", "FFF");
        }
        catch (JSONException e)
        {
            logger.warn("AuthProvider: Unexpected error", e);
        }

        throw new BadCredentialsException(json.toString());
    }
    // User has an JSON-message error in the first position of the list
    else
    {
        throw new BadCredentialsException(roles.get(0));
    }
}

}

...