ADManager Plus から PowerShell を使用して LDAP 情報を Java に送信する方法について説明します。以下の手順に従って、PowerShell スクリプトで LDAP 情報を取得し、Java アプリケーションにその情報を送信するプロセスを設定します。
手順
①PowerShellスクリプトでLDAP情報を取得
②取得した情報をHTTPリクエストとしてJavaアプリケーションに送信
③JavaアプリケーションでHTTPリクエストを受信して処理
1. PowerShellスクリプトでLDAP情報を取得
以下のPowerShellスクリプトを使用して、LDAP情報を取得し、JSON形式に変換します。
# 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に必要な依存関係を追加します。
<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リクエストを処理します。
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データベースに格納することができます。各自の環境に合わせて接続情報や設定を調整してください。