灵敏度标签删除对一个标签有效,但对另一个标签无效

问题描述 投票:0回答:1

我正在使用 Microsoft 信息保护 (MIP) SDK 从文件中删除敏感度标签:

我已使用相同的令牌在同一租户内成功创建了两个标签。

现在我尝试删除使用相同令牌在同一租户中创建的标签:

  • 标签A可以成功移除。
  • 标签 B 无法删除,删除后会抛出错误。

这是我在尝试删除标签 B时收到的错误:

System.AggregateException: One or more errors occurred. (The service didn't accept the 
auth token. Challenge:['Bearer resource="https://aadrm.com", realm="", 
authorization="https://login.windows.net/common/oauth2/authorize"']
HttpRequest.Id=545b6654-31a7-4016-8d49-875e6678aab8,
CorrelationId=b373b0c3-1495-4461-84f8-5f34404299f0,
CorrelationId.Description=ProtectionEngine,
CorrelationId=7d063033-43c3-4971-900c-2ac3eefe29be,
CorrelationId.Description=FileEngine)

这是我的代码。当设置

fileHandler
时出现错误,如下所示,使用 Label B:

fileEngine = MIPHelper.GetFileEngine();
fileHandler = fileEngine.CreateFileHandlerAsync(fileFullPath, fileFullPath, true).Result;
public static IFileEngine GetFileEngine()
{
    MIP.Initialize(MipComponent.File);

    ApplicationInfo appInfo = new ApplicationInfo()
    {
        ApplicationId = "AppId",
        ApplicationName = "MIPTest",
        ApplicationVersion = "1.0.0"
    };

    AuthDelegateImplementation authDelegate = new AuthDelegateImplementation(appInfo);

    MipConfiguration mipConfiguration = new MipConfiguration(
        appInfo, "mip_data", Microsoft.InformationProtection.LogLevel.Trace, false
    );
    mipConfiguration.LoggerConfigurationOverride = new LoggerConfiguration(10, 40, false);
    var mipContext = MIP.CreateMipContext(mipConfiguration);

    var profileSettings = new FileProfileSettings(
        mipContext, CacheStorageType.OnDiskEncrypted, new ConsentDelegateImplementation()
    );

    profile = Task.Run(async () => await MIP.LoadFileProfileAsync(profileSettings)).Result;

    var engineSettings = new FileEngineSettings(userName, authDelegate, "", "ko-kr");
    engineSettings.Identity = new Identity(userName);

    engine = Task.Run(async () => await profile.AddEngineAsync(engineSettings)).Result;

    return engine;
}

编辑:

我已经确定了问题并解决了它。最初,我通过设置

AuthDelegateImplementation
来配置该流程以获取身份验证令牌,并通过每小时运行的调度程序将其存储在数据库中。然后令牌被检索并重新使用。 (作为参考,我将此逻辑基于此处的示例:AuthDelegateImplementation.cs。在此示例中,
AcquireToken
参数
authority
resource
被硬编码以获取令牌。)

使用这种方法,我成功地从文件中删除了敏感度标签,而没有访问控制限制。但是,对于具有访问控制设置的标签,会出现前面描述的错误。

为了解决这个问题,我改用了另一种方法,每次使用该功能时都会获取新的身份验证令牌。这解决了问题,并且我验证了敏感度标签(包括具有访问控制设置的敏感度标签)已成功从文件中删除。

c# microsoft-information-protection mip-sdk
1个回答
0
投票

我已经确定了问题并解决了它。最初,我通过设置 AuthDelegateImplementation 来配置该流程,以获取身份验证令牌,并通过每小时运行的调度程序将其存储在数据库中。然后令牌被检索并重新使用。 (作为参考,我的逻辑基于此处的示例:AuthDelegateImplementation.cs。在此示例中,AcquireToken 参数authority 和resource 被硬编码以获取令牌。)

使用这种方法,我成功地从文件中删除了敏感度标签,而没有访问控制限制。但是,对于具有访问控制设置的标签,会出现前面描述的错误。

为了解决这个问题,我改用了另一种方法,每次使用该功能时都会获取新的身份验证令牌。这解决了问题,并且我验证了敏感度标签(包括具有访问控制设置的敏感度标签)已成功从文件中删除。

© www.soinside.com 2019 - 2024. All rights reserved.