azure-dev-docs/spring-boot-starter-for-azure-active-directory-developer-guide.md at main · MicrosoftDocs/azure-dev-docs · GitHub

Введение

В связи с необходимостью разработки в ближайшем будущем проекта единой службы аутентификации идентичности на основе JWT Token, необходимо интегрировать исходный домен AD компании для реализации аутентификации идентичности пользователя. В проекте используется платформа Spring Boot для разработки, и соответствующие шаги интегрированной разработки записаны здесь.

1 Введение в LDAP

Каталог оптимизирован для запросов, просмотра и поискаПрофессиональная распределенная база данных, Он организует данные в древовидной структуре, как каталог файлов в системах Linux / Unix. База данных каталога отличается от реляционной базы данных.

Она имеет отличную производительность чтения, но низкую производительность записи, и не имеет сложных функций, таких как обработка транзакций и откат. Она не подходит для хранения часто изменяемых данных. Служба каталогов – это система, состоящая из базы данных каталогов и набора протоколов доступа. Для хранения в каталоге подходит следующая информация:

  • Информация о сотрудниках предприятия, такая как имя, номер телефона, адрес электронной почты и т. Д .;
  • Открытые сертификаты и ключи безопасности;
  • Информация о физическом оборудовании компании, такая как сервер, его IP-адрес, место хранения, производитель, время покупки и т. Д .;

LDAP (облегченный протокол доступа к каталогам) – это упрощенный протокол доступа к каталогам, основанный на службах каталогов. Он разработан на основе стандарта X.500, но проще и может быть настроен по мере необходимости. В отличие от X.500, LDAP поддерживает TCP / IP, который необходим для доступа в Интернет.

LDAP имеет следующие характеристики:

  • Структура LDAP представлена ​​деревом, а не таблицей;
  • LDAP может быстро получать результаты запроса, но это относительно неэффективно при написании;
  • LDAP обеспечивает быстрый способ запроса статических данных;
  • На основе модели клиент / сервер сервер используется для хранения данных, а клиент предоставляет инструменты для управления деревом информации каталога;
  • LDAP – это открытый стандарт Интернета, основанный на протоколе X.500, а протокол LDAP – это межплатформенный Интернет-протокол.

Информация в каталоге LDAP организована в соответствии с древовидной структурой, а конкретная информация хранится в структуре данных записи. Запись эквивалентна записи таблицы в реляционной базе данных; запись представляет собой атрибут с уникальным именем идентификатора DN (Distinguished Name)

, DN используется для ссылки на запись, а DN эквивалентен первичному ключу в таблице реляционной базы данных. Атрибут состоит из типа и одного или нескольких значений (значений), что эквивалентно полю в реляционной базе данных, состоящему из имен полей и типов данных.

Это просто для удобства поиска. Тип в LDAP может иметь Множественные значения, а не различные домены, необходимые для уменьшения избыточности данных в реляционных базах данных, не должны быть связаны между собой. Организация записей в LDAP обычно организована в соответствии с географическим положением и организационными отношениями, что очень интуитивно понятно.

Информация LDAPХранение древовидной структуры(Как показано на рисунке ниже), страна (c = CN) или доменное имя (dc = com) обычно определяется в корне дерева, а одна или несколько организаций (Organization) (o = Acme) или организационных единиц ( Организационные единицы) (ou = Люди).

Похожее:  Фонбет идентификация - как пройти идентификацию по данным qiwi, через госуслуги и по паспорту

Организационная единица может содержать такую ​​информацию, как все сотрудники и все оборудование в здании. Кроме того, LDAP поддерживает контроль над тем, какие атрибуты может и должна поддерживать запись, что достигается с помощью специального атрибута, называемого objectClass.

Значение этого атрибута определяет некоторые правила, которым должна следовать запись, которые определяют, какие атрибуты запись может и должна содержать по крайней мере. Например: объектный класс inetOrgPerson должен поддерживать атрибуты sn (фамилия) и cn (общее имя), но он также может содержать дополнительные атрибуты, такие как адрес электронной почты и номер телефона.

3 Разница между доменом AD и LDAP

Домен Windows AD (Active Directory) должен быть экземпляром приложения LDAP, а не самим LDAP. Управление пользователями и полномочиями домена Windows AD должно заключаться в том, что Microsoft использует LDAP для хранения некоторых данных для решения конкретной проблемы управления доменом.

Домен AD предоставляет связанные пользовательские интерфейсы. Мы можем рассматривать домен AD как настроенный сервер LDAP Microsoft. Active Directory сначала реализует сервер LDAP, а затем использует этот сервер LDAP для реализации конкретного собственного приложения.

7 What I did to solve the problem

We are done, now if you try authenticating against LDAPS you will succeed.

There are many other approaches to perform LDAP authentication against active directory even without spring security by using Java. but I found spring-security very helpful so consider using it for your security requirement. let me know if you face any issue during LDAP login and I’ll try my best to help you.

Further Learning

Интегрированная конфигурация LDAP в Spring Boot

Добавить зависимость Maven в pom.xml

Зависимости проектаspring-boot-starter-data-ldapЭто реализация автоматической конфигурации LDAP, инкапсулированная Spring Boot. Она основана на spring-data-ldap для выполнения определенных операций на сервере LDAP.

1 Active Directory Authentication using LDAP in Spring Security -Example 1

Configuration

Add the following configuration into your spring application-context.xml file, I would suggest putting this configuration in a separate application-context-security.XML file along with other security-related stuff.

1 Метод 1. Настройка конфигурации LdapTemplate

1. Добавьте конфигурацию домена AD в файл конфигурации приложения проекта application.yml.

2 Метод 2. Автоматическая настройка с использованием Spring Data Ldap

1. Добавьте конфигурацию домена AD в файл конфигурации приложения проекта application.yml.

Используйте пакет проекта Spring Data Ldap для подключения к серверу LDAP, используя следующие методы настройки:

4 Errors during LDAP authentication

you need to be very lucky to complete LDAP authentication against Active directory without any error or exception, here I am listing down some common error which I encountered and their solutions for quick reference.

1) javax.naming.PartialResultException: Unprocessed Continuation Reference(s); remaining name ‘dc=company,dc=com’

This error comes because Microsoft Active Directory doesn’t handle referrals properly and to fix this set this property

2) javax.naming.NameNotFoundException: [LDAP: error code 32 – No Such Object]; remaining name ”

5 Tools

LDAP Browser: Having some tools to look data inside LDAP directory is best it gives you some visibility as well as means to browse data in LDAP. It’s called an LDAP browser and there is a lot of open source LDAP browser available in web, like the jexplorer. you can browse and see data inside Active Directory by using LDAP browser.

Похожее:  Руководство По Службе Аутентификации И Авторизации Java (JAAS) -

Access other resource servers from a resource server

This scenario supports a resource server visiting other resource servers.

To use the Azure AD starter in this scenario, use the following steps:

  1. Add the following dependencies to your pom.xml file.

  2. Add the following properties to your application.yml file:

  3. Use the @RegisteredOAuth2AuthorizedClient attribute in your code to access the related resource server, as shown in the following example:

For a complete sample demonstrating this scenario, see spring-cloud-azure-starter-active-directory sample: aad-resource-server-obo.

Access resource servers from a web application

To use the Azure AD starter in this scenario, use the following steps:

  1. Set the redirect URI as described previously.

  2. Add the following dependencies to your pom.xml file.

  3. Add the following properties to your application.yml file, as described previously:

    Here, graph is the name of your OAuth2AuthorizedClient, and scopes are the scopes needed for consent when logging in.

  4. Add code to your application similar to the following example:

    Here, graph is the client ID configured in the previous step. OAuth2AuthorizedClient contains the access token, which is used to access the resource server.

For a complete sample demonstrating this scenario, see spring-cloud-azure-starter-active-directory sample: aad-web-application.

Accessing your active directory tenant

You can now switch to your Active Directory tenant by clicking on the “Directory Subscription” icon on the top menu:

Application type

The spring.cloud.azure.active-directory.application-type property is optional because its value can be inferred by dependencies. You must manually set the property only when you use the web_application_and_resource_server value.

Has dependency: spring-security-oauth2-clientHas dependency: spring-security-oauth2-resource-serverValid values of application typeDefault value
YesNoweb_applicationweb_application
NoYesresource_serverresource_server
YesYesweb_application,resource_server,
resource_server_with_obo, web_application_and_resource_server
resource_server_with_obo

Click on “app registrations” and create a new registration:

Please note that:

Configurable properties

The Spring Boot Starter for Azure AD provides the following properties:

The following examples show you how to use these properties:

Property example 1: To use Azure China 21Vianet instead of Azure Global, use the following step.

With this method, you can use an Azure sovereign or national cloud instead of the Azure public cloud.

Property example 2: To use a group name to protect some method in a web application, use the following steps:

  1. Add the following property to your application.yml file:

  2. Add @EnableGlobalMethodSecurity(prePostEnabled = true) to your web application, as shown in the following example:

  3. Use the @PreAuthorize annotation to protect the method, as shown in the following example:

Property example 3: To enable incremental consent in a web application visiting resource servers, use the following steps:

  1. Add the following properties to your application.yml file:

  2. Add code to your application similar to the following example:

Похожее:  Реализация аутентификации в telegram-боте через OAuth2 на примере Box API

Configuring active directory

Now is the tricky part of this post! Configuring Active Directory is complicated, so we’ll go step-by-step and provide screenshots.

Core scenarios

This guide describes how to use the Azure AD starter in the following scenarios:

Create your own tenant

Active Directory provides tenants, which are basically instances that you can use. There are two types of instances: work and school (the one I will use here), and social accounts (called “Azure Active Directory B2C”).

As discussed earlier, there’s a generous free tier, so you can create your own tenant without paying anything:

Enable client logging

Azure SDKs for Java offers a consistent logging story to help troubleshoot and resolve application errors. The logs produced will capture the flow of an application before reaching the terminal, helping to locate the root issue. View the logging wiki for guidance on enabling logging.

Enable spring logging

Spring enables all the supported logging systems to set logger levels in the Spring environment (for example, in application.properties) by using logging.level.<logger-name>=<level> where level is one of TRACE, DEBUG, INFO, WARN, ERROR, FATAL, or OFF. You can configure the root logger by using logging.level.root.

The following example shows potential logging settings in the application.properties file:

For more information about logging configuration in Spring, see Logging in the Spring documentation.

Next steps

To learn more about Spring and Azure, continue to the Spring on Azure documentation center.

Prerequisites

To follow the instructions in this guide, you must have the following prerequisites:

[!IMPORTANT]
Spring Boot version 2.5 or higher is required to complete the steps in this article.

Protect a resource server/api

This scenario doesn’t support sign in, but protects the server by validating the access token. If the access token is valid, the server serves the request.

To use the Azure AD starter in this scenario, use the following steps:

Support access control by id token in a web application

The starter supports creating GrantedAuthority from an ID token’s roles claim to allow using the ID token for authorization in a web application. You can use the appRoles feature of Azure AD to create a roles claim and implement access control.

[!NOTE]

To support access control by ID token in a web application, use the following steps:

Web application and resource server in one application

This scenario supports Access a web application and Protect a resource server/API in one application.

To use aad-starter in this scenario, follow these steps:

Ссылки

  1. Используйте LDAP в Spring Boot для единообразного управления пользовательской информацией
  2. Использование Spring LDAP
  3. Краткое введение в концепции и принципы работы сервера LDAP
1 Звезда2 Звезды3 Звезды4 Звезды5 Звезд (1 оценок, среднее: 4,00 из 5)
Загрузка...

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Adblock
detector