0
0

ADManager Plus から PowerShell を使用して LDAP 情報を Java に送信する方法

Last updated at Posted at 2024-06-02

ADManager Plus から PowerShell を使用して LDAP 情報を Java に送信する方法について説明します。以下の手順に従って、PowerShell スクリプトで LDAP 情報を取得し、Java アプリケーションにその情報を送信するプロセスを設定します。

手順
①PowerShellスクリプトでLDAP情報を取得
②取得した情報をHTTPリクエストとしてJavaアプリケーションに送信
③JavaアプリケーションでHTTPリクエストを受信して処理

1. PowerShellスクリプトでLDAP情報を取得
以下のPowerShellスクリプトを使用して、LDAP情報を取得し、JSON形式に変換します。

powershell

# PowerShellスクリプト: Get-LDAPInfo.ps1

# LDAPサーバの接続情報を設定
$ldapServer = "LDAP://your-ldap-server"
$searchBase = "DC=example,DC=com"
$searchFilter = "(objectClass=inetOrgPerson)"

# ディレクトリエントリを作成
$directoryEntry = New-Object System.DirectoryServices.DirectoryEntry($ldapServer)

# ディレクトリ検索を作成
$directorySearcher = New-Object System.DirectoryServices.DirectorySearcher($directoryEntry)
$directorySearcher.Filter = $searchFilter

# 検索結果を取得
$searchResults = $directorySearcher.FindAll()

# 結果を格納するリストを作成
$userList = @()

foreach ($result in $searchResults) {
    $user = @{
        CN = $result.Properties["cn"] -join ", "
        Email = $result.Properties["mail"] -join ", "
    }
    $userList += $user
}

# JSON形式に変換
$userListJson = $userList | ConvertTo-Json

# HTTPリクエストでJavaアプリケーションに送信
$uri = "http://localhost:8080/receiveLDAPData"
Invoke-RestMethod -Uri $uri -Method Post -Body $userListJson -ContentType "application/json"

2. 取得した情報をHTTPリクエストとしてJavaアプリケーションに送信
PowerShellスクリプト内で Invoke-RestMethod を使用して、LDAP情報をHTTP POSTリクエストとして送信します。送信先のURIはJavaアプリケーションのエンドポイントに設定します。

3. JavaアプリケーションでHTTPリクエストを受信して処理
Javaアプリケーションは、HTTPリクエストを受信してデータを処理するサーバーを設定します。以下はSpring Bootを使用した例です。

Maven依存関係
まず、pom.xmlに必要な依存関係を追加します。

xml

<dependencies>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-web</artifactId>
    </dependency>
    <dependency>
        <groupId>com.fasterxml.jackson.core</groupId>
        <artifactId>jackson-databind</artifactId>
    </dependency>
</dependencies>

Javaコード
次に、Spring Bootアプリケーションを作成して、HTTPリクエストを処理します。

java

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RestController;
import com.fasterxml.jackson.databind.JsonNode;
import com.fasterxml.jackson.databind.ObjectMapper;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.util.Iterator;

@SpringBootApplication
public class LdapReceiverApplication {

    public static void main(String[] args) {
        SpringApplication.run(LdapReceiverApplication.class, args);
    }
}

@RestController
class LdapController {

    @PostMapping("/receiveLDAPData")
    public void receiveLDAPData(@RequestBody String ldapData) {
        /* LDAPデータをJSONとしてパース */
        ObjectMapper mapper = new ObjectMapper();
        try {
            JsonNode rootNode = mapper.readTree(ldapData);
            Iterator<JsonNode> elements = rootNode.elements();

            /* Oracleデータベース接続情報 */
            String dbUrl = "jdbc:oracle:thin:@localhost:1521:orcl";
            String dbUser = "dbuser";
            String dbPassword = "dbpassword";
            Connection conn = DriverManager.getConnection(dbUrl, dbUser, dbPassword);

            /* データベースへの挿入 */
            String sql = "INSERT INTO users (cn, email) VALUES (?, ?)";
            PreparedStatement pstmt = conn.prepareStatement(sql);

            while (elements.hasNext()) {
                JsonNode userNode = elements.next();
                String cn = userNode.get("CN").asText();
                String email = userNode.get("Email").asText();

                pstmt.setString(1, cn);
                pstmt.setString(2, email);
                pstmt.executeUpdate();
            }

            pstmt.close();
            conn.close();
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}

説明
PowerShellスクリプト:

  • System.DirectoryServices 名前空間を使用してLDAP情報を取得し、JSON形式に変換。
  • Invoke-RestMethod を使用して、HTTP POSTリクエストでJavaアプリケーションに送信。

Javaアプリケーション:

  • Spring Boot を使用して簡単なWebサーバーを作成。
  • /receiveLDAPData エンドポイントでPOSTリクエストを受信し、JSONデータをパースしてOracleデータベースに格納。

この手順に従って、ADManager Plusから取得したLDAP情報をPowerShellを通じてJavaアプリケーションに送信し、Oracleデータベースに格納することができます。各自の環境に合わせて接続情報や設定を調整してください。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0