<一>Identityserver4简单配置
1、新建一个.netcore mvc 空项目
2、安装配置identityserver
1、使用 nuget 添加 IdentityServer4 包;//Install-Package IdentityServer4 2、配置认证服务中间件管道;//app.UseIdentityServer();
3、 配置 IdentityServer 相关服务内容如下
1、这个 Authorization Server 保护了哪些 API (资源); 2、哪些客户端 Client(应用) 可以使用这个 Authorization Server; 3、指定可以使用 Authorization Server 授权的 Users(用户); 4、指定作用域定义系统中的 IdentityResources 资源;
这里先演示最简单的客户端授权模式,新建一个config类来作为配置文件
public static class config { public static IEnumerable<ApiScope> GetScopes() { return new ApiScope[] { new ApiScope("api1scope"), new ApiScope("api2scope"), //new ApiScope("scope2"), }; } // 这个 Authorization Server 保护了哪些 API (资源) public static IEnumerable<ApiResource> GetApiResources() { return new[] { new ApiResource("api", "My API") { Scopes = { "api1scope", "api2scope" } } }; } // 哪些客户端 Client(应用) 可以使用这个 Authorization Server public static IEnumerable<Client> GetClients() { return new[] { new Client { ClientId = "myself",//定义客户端 Id ClientSecrets = new [] { new Secret("secret".Sha256()) },//Client用来获取token AllowedGrantTypes = GrantTypes.ClientCredentials,//这里使用的是通过用户名密码和ClientCredentials来换取token的方式. ClientCredentials允许Client只使用ClientSecrets来获取token. 这比较适合那种没有用户参与的api动作 AllowedScopes = new [] { "api1scope" }// 允许访问的 API 资源 } }; } }
4、将identityserver 的配置添加进services,并将identityserver加入到管道
public class Startup { // This method gets called by the runtime. Use this method to add services to the container. // For more information on how to configure your application, visit https://go.microsoft.com/fwlink/?LinkID=398940 public void ConfigureServices(IServiceCollection services) { services.AddIdentityServer().AddDeveloperSigningCredential() .AddInMemoryApiResources(config.GetApiResources()) .AddInMemoryClients(config.GetClients())
.AddInMemoryApiScopes(config.GetScopes()); } // This method gets called by the runtime. Use this method to configure the HTTP request pipeline. public void Configure(IApplicationBuilder app, IWebHostEnvironment env) { if (env.IsDevelopment()) { app.UseDeveloperExceptionPage(); } app.UseIdentityServer(); app.UseRouting(); app.UseEndpoints(endpoints => { endpoints.MapGet("/", async context => { await context.Response.WriteAsync("Hello World!"); }); }); } }
4、启动项目
访问网址:http://localhost:5000/.well-known/openid-configuration你将会看到IdentityServer的各种元数据信息。
5、 用postman调用一下上面token_enpoint的地址拿到token
至此,identityserver4简单的配置就完成了。