本文共 3923 字,大约阅读时间需要 13 分钟。
实现 client 之前启动一下上一节的 server,启动之前需要清除一些代码
public static void Main(string[] args){ BuildWebHost(args) //.MigrateDbContext((context, services) => { // new ApplicationDbContextSeed().SeedAsync(context, services) // .Wait(); //}) .Run();}
[Required]//[DataType(DataType.EmailAddress)]//public string Email{get;set;}public string UserName { get; set; }
启动程序,使用 Config 中的 TestUser 登录
登录成功,不过现在是在本地,接下来需要把它放到客户端里面
新建一个 Asp.Net Core MVC 网站 MvcClient
// This method gets called by the runtime. Use this method to add services to the container.public void ConfigureServices(IServiceCollection services){ services.Configure(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.AddAuthentication(options => { options.DefaultScheme = "Cookies"; options.DefaultChallengeScheme = "oidc"; }) .AddCookie("Cookies") .AddOpenIdConnect("oidc", options => { options.SignInScheme = "Cookies"; options.Authority = "http://localhost:5000"; options.RequireHttpsMetadata = false; options.ClientId = "client"; options.ClientSecret = "secret"; options.SaveTokens = true; });}
app.UseAuthentication();
public static IWebHostBuilder CreateWebHostBuilder(string[] args) => WebHost.CreateDefaultBuilder(args) .UseUrls("http://localhost:5001") .UseStartup();
客户端设置为5001来启动,然后服务端设置为5000
public static IWebHost BuildWebHost(string[] args) => WebHost.CreateDefaultBuilder(args) .UseEnvironment("Development") .UseUrls("http://localhost:5000") .UseStartup() .Build();
public static IEnumerableGetClients(){ return new List { new Client() { ClientId = "client", AllowedGrantTypes = GrantTypes.Implicit,// 隐式模式 ClientSecrets = { new Secret("secret".Sha256()) }, RedirectUris = { "http://localhost:5001/signin-oidc" }, PostLogoutRedirectUris = { "http://localhost:5001/signout-callback-oidc" }, //AllowedScopes = {"api"}, AllowedScopes = { IdentityServerConstants.StandardScopes.Profile, IdentityServerConstants.StandardScopes.OpenId, } } };}
[Authorize]public class HomeController : Controller
"applicationUrl": "http://localhost:5001","sslPort": 0
启动服务端,客户端,可以看到跳转到登录界面
登录之后会跳转到
@{ ViewData["Title"] = "About";}@ViewData["Title"]
@ViewData["Message"]
@*Use this area to provide additional information.
*@
启动程序,跳转之后,点击 About 进入 About 页面
主要返回了服务端 Config 中配置的信息
public static IEnumerableGetIdentityResources() { return new List { new IdentityResources.OpenId(), new IdentityResources.Profile(), new IdentityResources.Email(), }; }
本作品采用进行许可。
欢迎转载、使用、重新发布,但务必保留文章署名 郑子铭 (包含链接: ),不得用于商业目的,基于本文修改后的作品务必以相同的许可发布。
如有任何疑问,请与我联系 (MingsonZheng@outlook.com) 。