java-native-interface - JNI 调用 MIP SDK 给出错误 - 无法打开数据库,检查文件夹权限:mip_data\mip\mip.policies.sqlite3
问题描述
我们在 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 安全性如何工作?它是否继承了本机调用的所有权限?
解决方案
您使用的是哪个操作系统?我无法回答您的 Java 问题,但我们确实在 Windows 上提供了 MIP SDK Java Wrapper 的私人预览版。我们计划在不久的将来扩展到一些 Linux 发行版,但首先正在收集有关 Windows 版本的反馈。
如果你有兴趣,我很乐意提供一个构建。
推荐阅读
- deep-learning - 如何将转储的 ocr 数据转换为结构化表格?
- ros - Turtlebot3 更换激光雷达传感器和 rpicamera
- python - 使用 Setuptools (setup.py) 构建 Python 包时使用动态版本
- c# - 如何在 C# 中使用反向公式。使用公式将控制器日期时间格式转换为正常日期时间?
- python - 如何为 WaveLink 设置节点
- google-sheets - google sheet:为多个合并单元格创建增量编号
- android - 如何将 SupportSQLiteDatabase 与 exoplayer 的 SimpleCache 一起使用?
- r - 在 R Shiny 中,如何使用条件 if/then 代替“req”或必需的输入函数来响应操作按钮?
- python-3.x - argparse '参数 1 必须是 str、bytes 或 bytearray,而不是 None'
- image-processing - 计算电池阳极的层数