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

Microsoft.InformationProtection.Exceptions.AccessDeniedException:该服务不接受身份验证令牌

龚钧
2023-03-14

我想扩展现有的迁移工具,以便在将文件导入到 SharePoint Online 之前对文件设置敏感度标签。我找到了微软信息保护SDK,它似乎提供了必要的API。

为了熟悉API,我下载并运行了ServicePrincipalAuth示例应用程序(请参见https://learn.microsoft.com/en-us/samples/azure-samples/mipsdk-dotnet-file-serviceprincipalauth/mipsdk-dotnet-file-serviceprincipalauth/). 但是,尽管我完全遵循了这些步骤,但我总是在CreateFileEngine方法的行中得到一个AccessDeniedException,消息为“the service don't accept the auth token”

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

到目前为止,我已经尝试了两种身份验证变体(证书和密钥)。两者的结果相同。

我的应用程序配置文件如下所示:

<configuration>
  <startup> 
    <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.7.2"/>
  </startup>
  <appSettings>
    <add key="ida:ClientId" value="[client ID from Azure AD app]"/>    
    <add key="ida:RedirectUri" value="mipsdk-auth-sample://authorize2"/>
    <add key="ida:CertThumbprint" value="[thumbprint of my self-signed certificate]"/>
    <add key="ida:ClientSecret" value="[client secret from Azure AD app]"/>
    <add key="ida:DoCertAuth" value="true"/>        
    <add key="ida:Tenant" value="[my tenant name].onmicrosoft.com"/>        
    <add key="app:Name" value="mipsdk-auth-sample2"/>
    <add key="app:Version" value="1.0.0"/>    
  </appSettings> 
</configuration>

更新:

我们的管理员需要同意 Azure AD 应用请求的 API 权限。完成此操作后,身份验证按预期工作!

不幸的是,我遇到了一个新的错误:

禁用RMS服务以发布此用户的内容。, Cor的ID=e2e…, Cor的ID.描述=FileHandler, Http请求. Id=00d…, ServiceDisabled Erro. Ex的=用户

这次在SetLabel方法中的行:

var result = Task.Run(async () => await handler.CommitAsync(options.OutputName)).Result;

错误消息建议为用户启用RMS服务。我(或我们的管理员)如何为Azure AD应用程序执行此操作?

任何提示都非常感谢!

共有1个答案

姬锐
2023-03-14

您看到的错误是因为RMS服务中启用了登录控制策略。

https://learn.microsoft.com/en-us/powershell/module/aadrm/set-aadrmonboardingcontrolpolicy?view=azureipps

您需要与管理员联系,询问他们如何配置策略。如果他们设置了一个组,您需要将服务主体添加到AAD组,该组作为入职控制的一部分启用。

 类似资料:
  • 我按照教程,但它似乎不能正常工作与JWT,但它是确定的基本身份验证。 我下载并安装了JwtAuthForWebAPI。我还生成了JWT令牌并尝试执行API调用,但错误是。 我必须实现/修改任何东西来将索赔从JWT转移到线程。当前原则 我的代码非常简单:global.asax.cs: Web.config: 调用示例

  • 除了用户名和密码(例如来自ACS的令牌)之外,是否还有其他使用AMQP对Azure服务总线进行授权的方法? 在我的场景中,我希望能够在不公开凭据的情况下为资源级客户端提供对服务总线的访问权限。

  • 我正在使用C#实现一个REST web服务,它将作为云服务托管在Azure上。因为它是一个REST服务,所以它是无状态的,因此没有cookie或会话状态。 Web服务只能通过HTTPS(由StartSSL. com提供的证书)访问。 用户成功登录服务后,他们将获得一个安全令牌。该令牌将在未来的通信中提供身份验证。 令牌将包含客户端的时间戳、用户ID和ip地址。 所有通信都只能通过HTTPS进行,所

  • 将有一个Angular JS客户机应用程序,它将需要发送用户名和密码,并从应用程序获取令牌,以便在顺序请求中使用。在某些时候,可能也会有Android客户端访问此web服务。 我假设Spring Security在内部将令牌映射到用户会话,这意味着它知道令牌XXXXXXXXXXXX是管理用户Bob,令牌AAAAAAAAAA是标准用户Joe。然而,我对Spring Security没有太多的经验,所

  • 问题内容: 在使用Java EE 6的Web应用程序上,我想将某些功能作为Json Rest Service公开。我想使用身份验证令牌进行登录,用户将发送其用户名,密码,服务器将发送回令牌,该令牌将用于授权用户在给定时间内的进一步请求。 到目前为止,有几个问题困扰着我; 当服务器创建令牌并将其发送给客户端时,服务器是否应该使用像哈希表这样的东西作为用户ID令牌对将其保存在DB或Bean中? 我可以

  • 问题内容: 我有有一个应用程序上的 添加应用程序后,会将我重定向到授权服务器,并在登录到该授权服务器后允许访问。我也想提供API访问权限,所以我希望应用程序能够通过Authorization- Header传递一个访问令牌来访问我的资源。 我通过与注意一起使用的身份验证筛选器进行了调试,未选中Authorization-Header值。 之后,我尝试创建自定义过滤器并将此过滤器添加到安全配置中 但