Javaセキュリティが有効になっているJavaにアプリケーションがあります。AIP クラウドからタグを取得する必要があります。msal4j Java ライブラリを使用してアクセス トークンを取得できました。MS が提供する MIP 用の Java ライブラリはないため、ネイティブ dll を実装して AIP ラベルをフェッチします。この dll は、Web アプリケーションと統合されています。アプリケーションは、ネイティブ ライブラリへの JNI 呼び出しを実行して、ラベルを取得します。
MIP SDK は、ラベルをキャッシュするために sqlite データベースを作成すると思います。そのため、内部的にローカル ディスクに sqlite ファイルを作成します。しかし、セキュリティが有効になっているため、MIP dll のアクセス拒否エラーが発生します。
「データベースを開けません。フォルダーのアクセス許可を確認してください: mip_data\mip\mip.policies.sqlite3」
manager.policy で以下の権限を与えようとしましたが、機能しません
grant codeBase "../Protect/lib/native/*" {
permission java.io.FilePermission "../Protect/bin/mip_data/mip/mip.policies.sqlite3", "read,write,delete";
permission java.io.FilePermission "../Protect/bin/mip_data/mip", "read,write,delete";
permission java.io.FilePermission "../Protect/bin/mip_data", "read,write,delete";
permission java.io.FilePermission "../Protect/bin", "read,write,delete";
};
grant codeBase "../Protect/lib/native/-" {
permission java.io.FilePermission "../Protect/bin/mip_data/mip/mip.policies.sqlite3", "read,write,delete";
permission java.io.FilePermission "../Protect/bin/mip_data/mip", "read,write,delete";
permission java.io.FilePermission "../Protect/bin/mip_data", "read,write,delete";
permission java.io.FilePermission "../Protect/bin", "read,write,delete";
};
grant codeBase "../Protect/lib/native/-" {
permission java.io.FilePermission "../Protect/bin/mip_data/mip/mip.policies.sqlite3", "read,write,delete";
permission java.io.FilePermission "../Protect/bin/mip_data/mip", "read,write,delete";
permission java.io.FilePermission "../Protect/bin/mip_data", "read,write,delete";
permission java.io.FilePermission "../Protect/bin", "read,write,delete";
};
grant codeBase "file:${catalina.home}/webapps/ProtectManager/WEB-INF/lib/*"
{
permission java.io.FilePermission "../Protect/bin/mip_data/mip/mip.policies.sqlite3", "read,write,delete";
permission java.io.FilePermission "../Protect/bin/mip_data/mip", "read,write,delete";
permission java.io.FilePermission "../Protect/bin/mip_data", "read,write,delete";
permission java.io.FilePermission "../Protect/bin", "read,write,delete";
}
JNI の場合、Java セキュリティはどのように機能しますか? ネイティブ呼び出しに対するすべての権限を継承しますか?