当前位置: 首页 > 知识库问答 >
问题:

在服务/守护程序应用程序中使用MIP SDK保护文件时出错

苏晓博
2023-03-14

有人可以帮助我解决以下问题吗?

场景。我有一个运行在Azure虚拟机上的Windows服务。服务接收文件,以某种方式修改它们(我们假设它给Word文件添加了自定义属性)并使用MIP SDK用template ID保护它们。

问题。IFileHandler. Set保护(字符串)委员会同步(…)失败,但有以下异常:

出现一个或多个错误。ServiceDiscoveryHelper::GetServiceDetails-无法计算域:许可证域、标识和云endpoint基URL均为空,correlationId:[9add32ba-0cb7-4d31-b9d8-000b7c694a4]

其他信息

  • RemoveProtection() CommitAsync(...) 工作正常。
  • 我在 Azure Active Directory 租户中注册了应用程序。
    • 生成的密钥:
    • 使用ADAL使用client_credentials身份验证流获取访问令牌,因为没有交互用户(我的应用程序是服务)
    • 我不知道是否必须在client_credentials流中使用identity参数

    主代码段

    MIP.Initialize(MipComponent.File);
    
    var appInfo = new ApplicationInfo{
        ApplicationId = ConfigurationManager.AppSettings["AppPrincipalId"],
        ApplicationName = "App name",
        ApplicationVersion = "1.0.0",
    };
    
    var authDelegate = new AuthDelegateImplementation(appInfo);
    var fileProfileSettings = new FileProfileSettings("mip_data", false,
        authDelegate, new ConsentDelegateImplementation(), appInfo, LogLevel.Trace);
    
    var fileProfile = MIP.LoadFileProfileAsync(fileProfileSettings).Result;
    var engineSettings = new FileEngineSettings("engine-id", "", "en-US"){
        Identity = new Identity($"{appInfo.ApplicationId}@<TENANT-NAME>"){
            DelegatedEmail = "<OWNER>@<TENANT-NAME>",
        },
    };
    var fileEngine = fileProfile.AddEngineAsync(engineSettings).Result;
    var fileHandler = fileEngine.CreateFileHandlerAsync("c:\\sample.docx", "0", true).Result;
    fileHandler.SetProtection(new ProtectionDescriptor("<TEMPLATE-ID>"));
    var success = fileHandler.CommitAsync("c:\\encrypted.docx").Result;
    

    AuthDelegate实现

    public string AcquireToken(Identity identity, string authority, string resource)
        var authContext = new AuthenticationContext(authority + "/" + "<TENANT_ID>");
        var clientCredential = new ClientCredential("<CLENT_ID>", "<CLIENT_SECRET>");
        var res = await authContext.AcquireTokenAsync(resource, clientCredential);
        return res.AccessToken;
    }
    

    ConsentDelegateImplementation

    public class ConsentDelegateImplementation : IConsentDelegate {
        public Consent GetUserConsent(string url) {
            return Consent.Accept;
        }
    }
    

共有1个答案

林富
2023-03-14

在测试MIP的本地持久状态(请参阅UseInMemoryStorage为flase时的FileProfileSettings.Path属性)后,它似乎已损坏。删除“mip_data”文件夹后,问题消失。

 类似资料:
  • 问题内容: 我有一个简单的Python脚本充当守护程序。我试图创建systemd脚本,以便能够在启动过程中启动此脚本。 当前的systemd脚本: node.py: 包含循环。 我尝试使用运行该服务。不幸的是,服务从未完成说明序列-我必须按Ctrl + C。脚本正在运行,但是状态为激活,一段时间后变为停用状态。现在我正在使用(但是在我尝试不使用它之前,症状是相似的)。 我应该为脚本实现一些其他功能

  • 我有几个Azure Functions,我想使用Azure AD对其应用身份验证。在用户模拟身份验证方面,我已经成功做到了这一点。但不幸的是,我无法从尝试访问Azure Functions的守护程序应用程序中获得同样的工作。 我的守护程序应用程序在Azure AD中注册,并公开应用程序范围。基本上,我有其他构建为应用程序服务的API,可以从守护程序应用程序成功地进行身份验证。我为Azure功能应用

  • 本文向大家介绍gradle 使用Gradle守护程序,包括了gradle 使用Gradle守护程序的使用技巧和注意事项,需要的朋友参考一下 示例 您可以启用Gradle守护程序来改善构建的性能。 Gradle守护程序使Gradle Framework保持初始化和运行状态,并在内存中缓存项目数据以提高性能。 对于单个版本 要为单个构建启用守护程序,您只需将--daemon参数传递给gradle命令或

  • 我正在尝试构建批处理作业以访问 Office 365 邮件 API。在检查文档(概念非常清楚)时,我找不到为 Java 编写的代码示例。我找到了这个,但它依赖于java pom文件,但如果可能的话,我很想直接使用REST API或Graphi API。 有人能告诉我如何开始构建一个守护程序服务来访问Office 365 REST API而无需用户登录吗? 更新 我有以下代码使用 AADL 库获取令

  • 问题内容: 我正在做Java试卷,并且遇到了以下使我感到困惑的问题。 以下哪项是正确的?(选择所有适用项。) 答:当应用程序开始运行时,会有一个守护线程,其任务是执行main()。 B.当一个应用程序开始运行时,有一个非守护进程线程,其工作是执行main()。 C.由守护程序线程创建的线程最初也是守护程序线程。 D.由非守护程序线程创建的线程最初也是非守护程序线程。 关键答案是B,C,D,谁能告诉

  • 问题内容: 我有一个使用Flask用Python编写的小应用程序。现在,我正在nohup下运行它,但是我想使其守护进程。这样做的正确方法是什么? 问题答案: 使用gunicorn部署可能是最简单的方法,请先安装gunicorn,然后: 尽管你可能想使用主管或类似性质的工具来监视黑胶皮(at the very least use – so you can reload/stop gunicorn e