Azure Active Directory应用程序权限更改延迟

时间:2016-03-30 22:20:25

标签: azure azure-active-directory microsoft-graph azure-api-apps

我正在使用Azure Active Directory为我的应用程序提供对Microsoft Graph API的访问权限。

当我更改权限(例如,对各种类型的数据进行读/写访问)时,我注意到保存更改时的延迟以及我能够通过API访问新数据的延迟。但是,我注意到,经过一段时间我的API调用开始工作。我的问题是

  1. 这是预期的行为吗?
  2. 是否有某些文档解释了每个Microsoft Graph API请求需要哪些权限?
  3. 请注意,在进行相关API请求之前,我在更改每个权限后请求新令牌。

1 个答案:

答案 0 :(得分:1)

当您更改范围时(如果您使用Azure来管理自动化),您必须请求用户同意。确保能够使用 PromptBehavior.Always 参数“一次”调用ADAL AcquireTocken 方法。 我认为这足以刷新您的同意并使您的新示波器可用。

这是我使用的宏代码:

        if (mustRefreshBecauseScopesHasChanged)
        {
            authResult = await authContext.AcquireTokenAsync(GraphResourceId, ClientId, AppRedirectURI, PromptBehavior.Always);
        }
        else
        {
            authResult = await authContext.AcquireTokenSilentAsync(GraphResourceId, ClientId);

            if (authResult.Status != AuthenticationStatus.Success && authResult.Error == "failed_to_acquire_token_silently")
                authResult = await authContext.AcquireTokenAsync(GraphResourceId, ClientId, AppRedirectURI, PromptBehavior.Auto);
        }


        if (authResult.Status != AuthenticationStatus.Success)
        {
            if (authResult.Error == "authentication_canceled")
            {
                // The user cancelled the sign-in, no need to display a message.
            }
            else
            {
                MessageDialog dialog = new MessageDialog(string.Format("If the error continues, please contact your administrator.\n\nError: {0}\n\n Error Description:\n\n{1}", authResult.Error, authResult.ErrorDescription), "Sorry, an error occurred while signing you in.");
                await dialog.ShowAsync();
            }
        }

对于范围权限别名,您可以在此处找到它们:

http://graph.microsoft.io/en-us/docs/authorization/permission_scopes