Как включить граф Microsoft в области? - PullRequest
0 голосов
/ 28 октября 2019

Я работаю над 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" } }
    });
});

Ниже моя конфигурация в Configure.

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");
});

Ниже мои AuthorizationUrl и TokenUrl

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

Ниже приведены разрешения API, установленные в объявлении Azure. enter image description here

Когда я пытаюсь получить токен (я выбрал галочку области действия) в сваггере, я получаю сообщение об ошибке ниже.

Привязка приложения попросила прочитать, чтоне существует на ресурсе

Кроме того, у меня есть еще одно приложение для внутренних API. Когда мы пытаемся получить токен доступа, можем ли мы использовать один и тот же токен для вызова API-интерфейсов Graph и API бэкэнда?

1 Ответ

0 голосов
/ 29 октября 2019

Обманщик приложения запросил чтение, которого нет на ресурсе.

Нет разрешения Read в Microsoft Graph api. Вы можете использовать User.Read или https://graph.microsoft.com/User.Read

Кроме того, у меня есть еще одно приложение для внутренних API. Когда мы пытаемся получить токен доступа, можем ли мы использовать один и тот же токен для вызова API-интерфейсов Graph и API бэкэнда?

Вы можете использовать этот токен для вызова API-интерфейсов Graph, но нужно добавить разрешения для API. Вы не можете использовать один и тот же токен для вызова разных API под разными ресурсами.

...