(精华)2020年11月21日 .NET Core 使用IdentityServer4保护API

一:.NET Core 使用IdentityServer4保护API

1:首先添加nuget包:Microsoft.AspNetCore.Authentication.JwtBearer
2:在Startup.cs类ConfigureServices方法中,将身份验证服务添加到DI并配置Bearer为默认方案

public void ConfigureServices(IServiceCollection services)
{
    services.AddControllers();

    //将身份验证服务添加到DI并配置Bearer为默认方案。
    services.AddAuthentication("Bearer")
        .AddJwtBearer("Bearer", options =>
        {
        	//地址为id4认证中心地址
            options.Authority = "http://localhost:5000";
            options.RequireHttpsMetadata = false;
            options.Audience = "api1";
        });
}

3:在Configure方法中,将身份验证中间件添加到管道中,以便对主机的每次调用都将自动执行身份验证

public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
{
    if (env.IsDevelopment())
    {
        app.UseDeveloperExceptionPage();
    }

    app.UseRouting();

    //将身份验证中间件添加到管道中,以便对主机的每次调用都将自动执行身份验证。
    app.UseAuthentication();
    //授权中间件,以确保匿名客户端无法访问我们的API端点。
    app.UseAuthorization();

    app.UseEndpoints(endpoints =>
    {
        endpoints.MapControllers();
    });
}

4:在需要被保护的API控制器上添加[Authorize]特性

二:客户端在请求对应API之前需要向IdentityServer4获取access_token(获取token地址

然后拿着获取到的access_token去访问api,只需要在请求头Headers中添加参数:Authorization,值为:Bearer+空格+access_token,可以看到已经能成功访问到被保护的API了在这里插入图片描述

已标记关键词 清除标记
©️2020 CSDN 皮肤主题: 猿与汪的秘密 设计师:上身试试 返回首页