ASP.NET Core分布式项目实战(oauth2 + oidc 实现 client部分)--学习笔记
任務16:oauth2 + oidc 實現 client部分
實現 client 之前啟動一下上一節的 server,啟動之前需要清除一些代碼
注釋 Program 的 MigrateDbContext
public static void Main(string[] args) {BuildWebHost(args)//.MigrateDbContext<ApplicationDbContext>((context, services) => {// new ApplicationDbContextSeed().SeedAsync(context, services)// .Wait();//}).Run(); }RegisterViewModel
[Required] //[DataType(DataType.EmailAddress)] //public string Email{get;set;} public string UserName { get; set; }啟動程序,使用 Config 中的 TestUser 登錄
登錄成功,不過現在是在本地,接下來需要把它放到客戶端里面
新建一個 Asp.Net Core MVC 網站 MvcClient
在 startup 的 ConfigureServices 中添加 Authentication
// 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.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;}); }在 startup 的 Configure 中的 UseMvc 前添加 Authentication
app.UseAuthentication();在 Program 的 CreateWebHostBuilder 中配置 Urls
public static IWebHostBuilder CreateWebHostBuilder(string[] args) =>WebHost.CreateDefaultBuilder(args).UseUrls("http://localhost:5001").UseStartup<Startup>();客戶端設置為5001來啟動,然后服務端設置為5000
mvcCookieAuthSample 的 Program
public static IWebHost BuildWebHost(string[] args) =>WebHost.CreateDefaultBuilder(args).UseEnvironment("Development").UseUrls("http://localhost:5000").UseStartup<Startup>().Build();修改服務端的 Config 配置跳轉地址
public static IEnumerable<Client> GetClients() {return new List<Client>{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,}}}; }客戶端的 Controller 打上 Authorize 標簽
[Authorize] public class HomeController : Controller修改客戶端 launchSettings.json 中的 applicationUrl
"applicationUrl": "http://localhost:5001", "sslPort": 0啟動服務端,客戶端,可以看到跳轉到登錄界面
登錄之后會跳轉到?http://localhost:5001/
在客戶端 About.cshtml 頁面顯示 identity 的 claims
@{ViewData["Title"] = "About"; } <h2>@ViewData["Title"]</h2> <h3>@ViewData["Message"]</h3>@*<p>Use this area to provide additional information.</p>*@<dl>@foreach (var claim in User.Claims){<dt>@claim.Type</dt><dt>@claim.Value</dt>} </dl>啟動程序,跳轉之后,點擊 About 進入 About 頁面
主要返回了服務端 Config 中配置的信息
public static IEnumerable<IdentityResource> GetIdentityResources(){return new List<IdentityResource>{new IdentityResources.OpenId(),new IdentityResources.Profile(),new IdentityResources.Email(),};}課程鏈接
http://video.jessetalk.cn/course/explore
相關文章
ASP.NET Core分布式項目實戰(oauth2 + oidc 實現 server部分)--學習筆記
ASP.NET Core分布式項目實戰(oauth2與open id connect 對比)--學習筆記
ASP.NET Core分布式項目實戰(詳解oauth2授權碼流程)--學習筆記
ASP.NET Core分布式項目實戰(oauth密碼模式identity server4實現)--學習筆記
ASP.NET Core分布式項目實戰(第三方ClientCredential模式調用)--學習筆記
ASP.NET Core分布式項目實戰(客戶端集成IdentityServer)--學習筆記
ASP.NET Core分布式項目實戰(業務介紹,架構設計,oAuth2,IdentityServer4)--學習筆記
ASP.NET Core分布式項目實戰(課程介紹,MVP,瀑布與敏捷)--學習筆記
ASP.NET Core快速入門 -- 學習筆記匯總
總結
以上是生活随笔為你收集整理的ASP.NET Core分布式项目实战(oauth2 + oidc 实现 client部分)--学习笔记的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 新基建火了,开源云计算渠道能做什么?
- 下一篇: asp.net ajax控件工具集 Au