1

尝试使用Microsoft Graph Security API构建客户端应用程序。

我们已经在 Azure 门户中进行了授权,获得了管理员同意,并且 JWT 显示范围存在(下面的片段):

"scp": "Calendars.Read MailboxSettings.Read offline_access People.Read profile SecurityEvents.Read.All SecurityEvents.ReadWrite.All User.Read User.Read.All",

以下是我们请求令牌的方式:

// acquire token for ms graph. the service we're acquiring a token for 
// should be the same service we call in the ajax request below
authContext.acquireToken('https://graph.microsoft.com', (error, token) => {
    // Handle ADAL Error
    if (error || !token) {
        printErrorMessage('ADAL Error Occurred: ' + error);
        return;
    }

    this.token = token; //update our data with the token
});

但是当我们通过网络调用到达端点时,我们仍然得到一个403没有返回数据的结果:

$.ajax({
    type: "GET",
    url: "https://graph.microsoft.com/v1.0/security/alerts",
    headers: {
        'Authorization': 'Bearer ' + this.token,
    }
}).done(async (data) => {
    console.log(data);
}).fail(() => {
    console.log('Error getting top 10 people!');
});

这是潜在的错误(通过邮递员):

{
  "error": {
    "code": "UnknownError",
    "message": "Auth token does not contain valid permissions or user does not have valid roles.",
    "innerError": {
      "request-id": "6411dbc9-eebb-4522-b789-62ab5f754d0c",
      "date": "2019-04-23T15:17:12"
    }
  }
}

编辑:访问应用程序的用户附加了“安全阅读器”目录角色。

目录角色

任何帮助将不胜感激。:)

4

2 回答 2

1

Security reader您的应用似乎具有正确的范围,但从 Microsoft Graph 安全 API 请求警报的用户在 Azure AD中没有角色。

要向用户添加角色,请以租户管理员身份登录 Azure 门户,然后选择Azure Active Directory刀片 > Users> 选择用户名 > Directory Role> 然后选择Add role

一旦用户有权读取安全信息,他们应该能够通过 Microsoft Graph 安全 API 接收警报。

来源:https ://docs.microsoft.com/graph/security-authorization#assign-azure-ad-roles-to-users

于 2019-04-23T18:45:38.473 回答
0

我一直在使用一些 MS DEV 资源进行幕后工作,我们相信我们已经找到了为什么这不起作用。

取自一封电子邮件:

默认情况下,通过 AAD 进行的隐式授权使用 response_mode=fragment。一旦响应模式更改为 response_mode=form_post,id 令牌和访问令牌(如果请求)将作为 POST 请求发送并包含允许使用 Graph API 安全端点的 wids 声明。

提出的解决方法基本上是构建一个服务器端应用程序,该应用程序将捕获具有角色的 POST 请求,然后使用它来调用 Graph Security API。

这可行,但基本上意味着隐式流客户端应用程序本质上与 Graph Secuirty API 不兼容。超级令人沮丧,并且极难从文档中追踪。

希望MS可以提出其他一些机制。

于 2019-05-07T01:00:16.447 回答