Документ Microsoft Word (8). Spring security
Скачать 28.3 Kb.
|
Spring security Это фреймворк, который позволят добавить аутентификацию и авторизацию в ваше веб-приложение., а так же обеспечивает защиту от распространенных атак в веб-приложение. Базируется на двух интерфейсах, которые определяют связь сущностей с секьюрностью: UserDetails и GrantedAuthority. UserDetails(Юзер детаилс) - то, что будет интерпретироваться системой как пользователь. loadUserByUsername(String username) GrantedAuthority(ГрантедАвторити) - сущность, описывающая права юзера. Аутентификация и авторизация должны на уровне фильтров до выполнения любой иной логики приложения. Сервлет — это класс, который умеет получать запросы от клиента и возвращать ему ответы набор фильтров сервлетов Что такое авторизация, аутентификация. Аутентификация —проверка подлинности пользователя путем сравнения введённого им пароля с паролем, сохраненным в базе данных. Авторизация — предоставление пользователю прав на выполнение определенных действий. Чем отличается In Memory Authentication от basic Authentication? In-Memory Authentication – хранение данных пользователей в оперативной памяти приложения. Basic Authentication представляет собой процедуру обмена конфиденциальной информацией (имя пользователя и пароль) для аутентификации пользователя. Как мы можем добавить секьюрность к контроллеру? @Secured(секьюред) и @RolesAllowed(роллес алауд) – просто прописываем название ролей @PreAuthorize(пре ауторайз) и @PostAuthorize –(Spring Expression Language) Связи таблиц many-to-many one-to-one. Один к одному (@OneToOne) Объект одной сущности можно сопоставить с одним объектом другой сущности (Одна строка из таблицы А может быть связана тольс одной строкой из таблицы б) Многие ко многим (@ManyToMany) одна строка из таблицы А может быть связана с множеством строк из таблицы В. В свою очередь одна строка из таблицы В может быть связана с множеством строк из таблицы А. Как работают каскады для таблиц и какие они бывают? Каскадные типы используются для того, чтобы показать, как должны себя вести связанные сущности при использовании специфических методов(создание изи удаления сущности). Стандарт JPA подразумевает использование шести видов каскадности: PERSIST — операции сохранения будут происходить каскадно (для методов save() и persist()). То есть, если мы сохраняем сущность, связанную с другими сущностями, они также сохраняются в БД (если их ещё там нет) MERGE — операции обновления будут происходить каскадно (для метода merge()) REMOVE — операции удаления происходят каскадно (метод remove()) ALL — содержит сразу три каскадные операции — PERSIST - MERGE - REMOVE Bootstrap. Bootstrap – это ФРЕИМВОРК ДЛЯ создания дизайна сайта. Включает набор готовых css(СИЭСЕС) + несколько часто используемых js решений. Rest-сервисы. Их преимущества и недостатки. REST — набор правил описывающий то как как должен формироваться клиен-серверный запрос с использованием HTTP протокола Пример ресурсного роутинга: GET /articles/ — возвращает все статьи GET /articles/new — форма для создания новой статьи POST /articles/ — создаёт новую статью GET /articles/1 — возвращает статью с идентификатором «1» GET /articles/1/edit — форма редактирования статьи PATCH или PUT /articles/1 — обновляет статью с идентификатором «1» DELETE /articles/1 — удаляет статью с идентификатором «1» Недостатки Не существует стандарта реализации RESTful API. он завязан на HTTP. Спецификация HTML имеет ограничения и формы, отправляющие данные могут быть реализованы только через GET или POST. Достоинства Как видно, в архитектура REST очень проста в плане использования Форматы данных использующиеся в REST-сервисах. Архитектура REST позволяет поставщикам API доставлять данные в различных форматах, таких как: простой текст, HTML, XML, JSON. Что такое responseBody, requestBody, ResponseEntity ResponseEntity класс который позволяет сформировать http ответ. Он содержит тело ответа, код состояния, заголовки. @RequestBody – c его помощью можно получить тело запроса , как параметр с методе контроллера. Spring автоматически десериализует HttpRequest в тип Java, если указан соответствующий тип. @ResponseBody - В этот момент происходит обратная сериализация сущности в HttpResponse Что такое AJAX/fetch? С их помощью на javascript можно получать и отправлять сетевые запросы @RestController – это просто сокращенная запись для @Controller + @ResponseBody. RestTemplate и его методы (печатать) Что такое HTTP, основные его методы? HTTP (англ. - Hyper Text Transfer Protocol) — протокол передачи данных между клиентом и сервером Из чего состоит стартовой строки, которая задает параметры запроса или ответа, заголовка, который описывает сведения о передаче и другую служебную информацию. тело (его не всегда можно встретить в структуре). Обычно в нем как раз лежат передаваемые данные. От заголовка тело отделяется пустой строкой. Опишите процесс получения доступа, перечислите ключевые интерфейсы и компоненты. Прежде чем попасть в контроллер, запрос проходит через цепочку фильтров. UsernamePasswordAuthenticationFilter получает имя и пароль и формирует объект Authentication. затем AuthenticationManager при помощи метода authenticate(аунтификейт) выполняет аутентификацию Если аутентификация не прошла то выбрасывается исключение BadCredentials.(бэд криденшиналс) Если аутентификация прошла возвращается объект Authentication ------------------------------ В случае же успеха возвращается тоже объект Authentication, но заполненный по-другому: в поле Principal объекта Authentication будет реальный пользователь в виде UserDetails (сюда перемещаются имя и пароль), поле Credentials обнуляется, а isAuthenticated() меняется с false на true. RestTemplate и его методы RestTemplate это специальный клиент для отправки запросов в Spring. Он предоставляет удобные API для легкого вызова конечных точек REST’а в одну строку.
Основные методы: getForEntity - +выполняет запрос GET и возвращает объект ResponseEntity; getForObject - аналогично getForEntity, но возвращает ресурс напрямую; exchange - выполняет указанный метод HTTP, такой как GET, POST, PUT и т. д., и возвращает объект ResponseEntity; execute - аналогичен exchange методу, но требует дополнительных параметров: RequestCallback и ResultSetExtractor; headForHeaders - выполняет запрос HEAD и возвращает все заголовки; optionsForAllow - выполняет запрос OPTIONS и использует заголовок Allow; delete - удаляет ресурсы по указанному URL-адресу с помощью метода HTTP DELETE; put - обновляет ресурс для заданного URL-адреса с помощью метода HTTP PUT; postForObject - создает новый запрос с использованием метода HTTP POST и возвращает сущность; postForLocation - создает новый запрос с использованием метода HTTP POST и возвращает его расположение; |