Asp.net web api 如何为合作伙伴网站和定制后台SPA重用相同的api?

Asp.net web api 如何为合作伙伴网站和定制后台SPA重用相同的api?,asp.net-web-api,authorization,microservices,Asp.net Web Api,Authorization,Microservices,我们正在使用一些Web API 2: -内部通过后台js SPA -并从外部合作伙伴网站进行外部访问 为了控制授权,我们使用Authorize属性设计了代码: [Route("{me}/Default", Name = "UpdatePersonalAccount")] [HttpGet] [Authorize(Roles = "UpdatePersonalAccount")] public async Task<string> UpdatePersonalAccount(UserI

我们正在使用一些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;
}
[路由(“{me}/Default”,Name=“UpdatePersonalAccount”)]
[HttpGet]
[授权(Roles=“UpdatePersonalAccount”)]
公共异步任务更新PersonalAccount(UserInfo userInfoDTO)
{
var result=await _dbContextHandler.UsingDbContextAsync(_dbFactory,
async db=>await_userServices.UpdatePersonalAccount(db,userInfoDTO,User));
var apiResult=结果;
返回结果;
}
例如,在本例中,调用方需要具有“UpdatePersonalAccount”权限。 内部管理员用户是在我们的系统中定义的,我们为他们分配了一个角色(即权限组)。 当内部管理员用户在SPA js应用程序上识别自己时,我们正在验证他是否具有api级别的所需权限

现在,我们打算将我们的api公开给外部合作伙伴网站,我对如何实现这一点有点困惑。 以下是我们计划如何向外部网站公开我们的API:

在我们的内部授权服务中创建一个假服务帐户并设置其权限似乎是错误的。
因此,我想知道更有效或标准的方法是什么?

什么服务生成访问令牌-是您的还是外部的?访问令牌是否包含任何授权声明信息?生成访问令牌的服务是我的。我们用于检索SPA(guid)发送的acces令牌,然后在内部使用此访问令牌请求授权服务时,它会将与之相关的授权列表返回给我们,以便我们在服务调用中进行检查。