目录
一, 认证服务端
二, API 资源端
三, 调用客户端
详细步骤
一, 认证服务端
1, 新建一个名为 "CertifiedCenter" 的 ASP.NET core web 应用程序, 如下图
2, 添加 IdentityServer4 的 2 个引用 IdentityServer4 和 IdentityServer4.AccessTokenValidation, 如下图:
3, 添加 Config.cs 类, 如下图:
Config.cs 的内容如下:
- using IdentityServer4.Models;
- using System;
- using System.Collections.Generic;
- using System.Linq;
- using System.Threading.Tasks;
- namespace CertifiedCenter
- {
- public class Config
- {
- public static IEnumerable<ApiResource> GetApiResources()
- {
- return new List<ApiResource>
- {
- // 参数是资源名称, 资源显示名称
- new ApiResource("GbaseDataSourceApi", "GbaseDataSourceApi")
- };
- }
- public static IEnumerable<Client> GetClients()
- {
- return new List<Client>
- {
- new Client
- {
- ClientId = "clientId",
- AllowedGrantTypes = GrantTypes.ClientCredentials,
- // 用于验证的 secret
- ClientSecrets =
- {
- new Secret("123456".Sha256())
- },
- // 允许的范围
- AllowedScopes = { "api1" }
- }
- };
- }
- }
- }
4, 添加代码到 Startup.cs, 代码如下:
- using System;
- using System.Collections.Generic;
- using System.Linq;
- using System.Threading.Tasks;
- using Microsoft.AspNetCore.Builder;
- using Microsoft.AspNetCore.Hosting;
- using Microsoft.AspNetCore.Http;
- using Microsoft.AspNetCore.HttpsPolicy;
- using Microsoft.AspNetCore.Mvc;
- using Microsoft.Extensions.Configuration;
- using Microsoft.Extensions.DependencyInjection;
- namespace CertifiedCenter
- {
- public class Startup
- {
- public Startup(IConfiguration configuration)
- {
- Configuration = configuration;
- }
- public IConfiguration Configuration { get; }
- // This method gets called by the runtime. Use this method to add services to the container.
- public void ConfigureServices(IServiceCollection services)
- {
- services.Configure<CookiePolicyOptions>(options =>
- {
- // This lambda determines whether user consent for non-essential cookies is needed for a given request.
- options.CheckConsentNeeded = context => true;
- options.MinimumSameSitePolicy = SameSiteMode.None;
- });
- services.AddMvc().SetCompatibilityVersion(CompatibilityVersion.Version_2_1);
- services.AddIdentityServer()
- // 设置临时签名凭据
- .AddDeveloperSigningCredential()
- // 从 Config 类里面读取刚刚定义的 API 资源
- .AddInMemoryApiResources(Config.GetApiResources())
- // 从 Config 类里面读取刚刚定义的 Client 集合
- .AddInMemoryClients(Config.GetClients());
- }
- // This method gets called by the runtime. Use this method to configure the HTTP request pipeline.
- public void Configure(IApplicationBuilder App, IHostingEnvironment env)
- {
- if (env.IsDevelopment())
- {
- App.UseDeveloperExceptionPage();
- }
- else
- {
- App.UseExceptionHandler("/Home/Error");
- App.UseHsts();
- }
- //App.UseHttpsRedirection();
- App.UseStaticFiles();
- App.UseCookiePolicy();
- App.UseMvc(routes =>
- {
- routes.MapRoute(
- name: "default",
- template: "{controller=Home}/{action=Index}/{id?}");
- });
- App.UseIdentityServer();
- }
- }
- }
5, 最后一步, 修改端口号, 把端口改为 5000, 如下图
来源: https://www.cnblogs.com/wjx-blog/p/11053868.html