Как повторно использовать один и тот же API-интерфейс для партнерского веб-сайта и пользовательского бэк-офиса SPA? - PullRequest
2 голосов
/ 26 сентября 2019

У нас есть некоторый Web API 2, который мы используем: - внутренне через бэк-офис js SPA - и внешне с внешнего сайта партнера

Для управления авторизацией мы разработали наш код с атрибутом Authorize:

[Route("{me}/Default", Name = "UpdatePersonalAccount")]
[HttpGet]
[Authorize(Roles = "UpdatePersonalAccount")]
public async Task<string> UpdatePersonalAccount(UserInfo userInfoDTO)
{
    var result = await _dbContextHandler.UsingDbContextAsync(_dbFactory,
        async db => await _userServices.UpdatePersonalAccount(db, userInfoDTO, User));

    var apiResult = result;
    return apiResult;
}

В этом случае, например, вызывающая сторона должна иметь разрешение «UpdatePersonalAccount».Внутренние пользователи-администраторы определены в нашей системе, и мы присвоили им роль (т. Е. Группу разрешений).Когда внутренний пользователь-администратор идентифицирует себя в приложении SPA js, мы проверяем, что у него есть необходимые разрешения на уровне API.

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

planned architecture

Создать поддельную учетную запись службы и установить ее разрешение в нашей службе внутренней авторизации кажется неправильным.Итак, я хочу знать, что является более эффективным или стандартным способом сделать это?

...