我有一个托管IdentityServer4的项目,我也试图在同一个项目中托管一个Web,它接受访问令牌。
我的问题是,单个项目是否可能包含使用相同IdentityServer的IdentityServer和Web?
编辑:API必须使用授权属性进行保护
发布于 2018-04-04 06:46:20
我有一个标识服务器4项目,在同一个项目中有一个用于CIUD的客户端API。(让我们称它为developer console api)。
然后,我有一个附带项目,它是一个asp .net核心项目,它包含用于开发人员控制台的实际剃须刀页面,它访问标识服务器项目中的API。
我这样做的原因是,只有一个项目应该更新数据库。因此,为了更新身份服务器拥有的数据库,决定了访问它的API也应该在同一个项目中。
是的,您可以从您的标识服务器4项目中获得一个web。
配置服务
services.AddAuthentication(IdentityServerConstants.DefaultCookieAuthenticationScheme)
.AddIdentityServerAuthentication(options =>
{
// base-address of your identityserver
options.Authority = settingsSetup.Settings.Authority;
// name of the API resource
options.ApiName = "testapi";
options.RequireHttpsMetadata = false;
});
配置
我觉得这两样都需要。
JwtSecurityTokenHandler.DefaultInboundClaimTypeMap.Clear();
app.UseAuthentication();
app.UseIdentityServer();
端点
因为请求是使用访问令牌作为承载令牌发送的,所以每个API调用的授权都需要包括authencationScheme。我还没有完全弄清楚为什么,但没有这一点,它是行不通的。
[HttpGet("Client/List")]
[Authorize(AuthenticationSchemes = "Bearer")]
public ActionResult ClientList()
{
}
https://stackoverflow.com/questions/49644410
复制相似问题