如何在范围内包括Microsoft图形?

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

我正在研究Azure AD和.net核心应用程序。我有一个招摇的应用程序,它将进行身份验证和授权。下面是我的招摇配置。

services.AddSwaggerGen(c =>
{
    c.SwaggerDoc("v1", new Info { Title = "My API", Version = "v1" });

    c.AddSecurityDefinition("oauth2", new OAuth2Scheme
    {
        Type = "oauth2",
        Flow = "implicit",
        AuthorizationUrl = swaggerUIOptions.AuthorizationUrl,
        TokenUrl = swaggerUIOptions.TokenUrl,
        Scopes = new Dictionary<string, string>
        { 
            { "Read", "https://graph.microsoft.com/user.read" }
        }
    });

    c.AddSecurityRequirement(new Dictionary<string, IEnumerable<string>>
    { 
        { "oauth2", new [] { "readAccess", "writeAccess" } }
    });
});

下面是我在配置中的配置。

app.UseSwaggerUI(c =>
{
    c.RoutePrefix = "swagger";
    c.OAuthClientId(swaggerUIOptions.ClientId);
    c.OAuthClientSecret(swaggerUIOptions.ClientSecret);
    c.OAuthRealm(azureActiveDirectoryOptions.ClientId);
    c.OAuthAppName("Swagger");
    c.SwaggerEndpoint("/swagger/v1/swagger.json", "My API V1");
});

下面是我的AuthorizationUrlTokenUrl

"AuthorizationUrl": "https://login.microsoftonline.com/tenantid/oauth2/v2.0/authorize",
"TokenUrl": "https://login.microsoftonline.com/tenantid/oauth2/v2.0/token"

以下是在天蓝色广告中设置的API权限。enter image description here

当我大范围地尝试获取令牌(我选择了作用域选中标记)时,出现以下错误。

应用程序大张旗鼓地要求提供资源上不存在的读取

此外,我还有一个用于后端API的应用程序。当我们尝试获取访问令牌时,是否可以使用相同的令牌来调用Graph API和后端API?

c# asp.net-core azure-active-directory microsoft-graph swagger-ui
1个回答
0
投票

应用程序大张旗鼓地要求读取不存在于资源。

Microsoft Graph api下没有Read权限。您可以使用User.Readhttps://graph.microsoft.com/User.Read

此外,我还有一个用于后端API的应用程序。当我们尝试获得访问权限时令牌,我们可以使用相同的令牌来调用Graph API和后端API吗?

您可以使用此令牌来调用Graph API,但需要添加api的权限。您不能使用同一令牌在不同资源下调用不同的api。

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