1-创建客户端的webapi项目
E:\coding\netcore\IdentityServerSample>dotnet new webapi --name IdentityCredentialApi
2-在需要启用授权的方法上增加Authorize标签
3-使用nuget工具安装 IdentityServer4.AccessTokenValidation
4-启用客户端授权, 需要配置连接的授权的服务器等
Startup.cs
public void ConfigureServices(IServiceCollection services){services.AddAuthentication("Bearer").AddIdentityServerAuthentication(options=>{options.Authority="http://localhost:5000";options.RequireHttpsMetadata=false;options.ApiName="api";});services.AddMvc().SetCompatibilityVersion(CompatibilityVersion.Version_2_1);}
public void Configure(IApplicationBuilder app, IHostingEnvironment env){if (env.IsDevelopment()){app.UseDeveloperExceptionPage();}else{app.UseHsts();}app.UseAuthentication(); //新加app.UseMvc();}
5-修改启动的url, 为了在测试时与服务器的不冲突, 在Program.cs修改
public static IWebHostBuilder CreateWebHostBuilder(string[] args) =>WebHost.CreateDefaultBuilder(args).UseStartup<Startup>().UseUrls("http://localhost:5001");
6-进行测试,启用服务端和客户端,
如果默认访问需要授权的网页,会报401未授权错误
要想获得授权,第一步通过服务器获得token, http://localhost:5000/connect/token
参数 client_id:client client_secret:secret grant_type:client_credentials
第二步,通过返回的token再调用客户端的http://localhost:5001/api/values 地址