Получаете куки после успешного входа?

Так что у меня есть Angular App, которая имеет логин и аутентификацию пользователя. Когда они входят в систему, они переходят на отдельный URL-адрес и службу, что не является частью углового шаблона (не мой выбор, не мой дизайн, у него нет свободы изменять его).

Таким образом, у нас есть URL нашего приложения на https://my.app.com/appname

И URL-адрес для входа (который перенаправляет на другой URL-адрес, содержащий материал Spring CAS)

https://my.app.com:8082/api/applications/appname/user/login

Который перенаправляет на

https://yours.app.com/CAS/login.

После успешного входа мы возвращаемся на исходную страницу приложения.

Однако мне нужно как-то получить Cookie, в котором есть имя пользователя, вошедшего в приложение.

Этот файл cookie является файлом cookie ответа, связанным с https://my.app.com:8082/api/applications/appname/user/login

но не основной URL-адрес приложения.

Итак, как мне получить этот файл cookie, предпочтительно используя ngCookie?

Для справки вот внутренний код, который обрабатывает это.

@RequestMapping(method = RequestMethod.GET, value = "/login", headers = "Accept=application/json")
public @ResponseBody HttpServletResponse login(HttpServletRequest request, HttpServletResponse response) {
    // toLog(Level.INFO, "Logging user in.");
    String referingURL = request.getHeader("referer");
    _LOG.debug("Referer: " + referingURL);
    try {
        String user = "123456789";
        user = SecurityUtils.getCurrentUsername();
        Cookie userCookie = new Cookie("USERNAME", user);
        userCookie.setSecure(true);
        response.addCookie(userCookie);
        response.sendRedirect(referingURL);
        return response;
    } catch (Exception e) {
        // toLog(Level.ERROR, "Error logging user in", e);
        throw new ResourceNotFoundException(e);
    }
}

Где эта строка Cookie userCookie... это куки, которые я хочу получить.

Еще проще.

URL https://my.app.com:8082/api/applications/appname/user/login

Имеет ответный файл cookie с ключом USERNAME со значением имени пользователя, которое я хочу.

Приложение находится по https://my.app.com/appname, и мне нужно получить доступ к ранее упомянутым файлам cookie.

1 ответ

CAS не устанавливает куки с логином пользователя. Он установит файл cookie для вашего сеанса единого входа, называемый файлом cookie предоставления билетов (TGC). Этот токен не предоставляет никакой информации о зарегистрированном пользователе.

Чтобы получить личность зарегистрированного пользователя, вы должны подтвердить сервисный билет. Этот билет добавляется к URL-адресу вашего сервиса, когда CAS / login перенаправляет вас обратно к вашему приложению. Затем клиент CAS должен проверить этот билет по CAS / serviceValidate. Этот клиент должен быть в вашем бэкэнде, а имя пользователя - в сеансе. До вас, чтобы отправить его на ваш интерфейс так, как вы хотите.

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