1 什么是OIDC
OIDC 是對(duì)OpenID Connect 的檢查温治,OIDC=(Identity ,Autjentication)+OAuth 2.0.
博文參考:https://www.cnblogs.com/linianhui/p/openid-connect-core.html
2 創(chuàng)建一個(gè)MVC 客戶端
授權(quán)服務(wù)端采用之前的服務(wù)端 (代碼已經(jīng)上傳蛾绎,點(diǎn)擊下載) 服務(wù)中心項(xiàng)目為 IdentityServer.ServerMVC
2.1.1新建一個(gè) ASP.NET Core 網(wǎng)站 IdentityServer.ClientMVC,選擇不要授權(quán)Authentication奔坟。
2.1.2修改Satrtup.cs
文件中的 ConfigureServices
方法:
public void ConfigureServices(IServiceCollection services)
{
services.AddMvc();
JwtSecurityTokenHandler.DefaultInboundClaimTypeMap.Clear();
services.AddAuthentication(options =>
{
options.DefaultScheme = "Cookies";
options.DefaultChallengeScheme = "oidc";
})
.AddCookie("Cookies")
.AddOpenIdConnect("oidc", options =>
{
options.SignInScheme = "Cookies";
options.Authority = "http://localhost:5000";//授權(quán)服務(wù)中心
options.RequireHttpsMetadata = false;
options.ClientId = "mvc";//授權(quán)服務(wù)分配的ClientId
options.SaveTokens = true;
});
}
-
AddAuthentication
注入授權(quán)服務(wù)到容器中读整,用Cookie 作為驗(yàn)證用戶的方法(通過(guò)Cookies設(shè)置于為DefaultScheme). - 設(shè)置
DefaultChallengeScheme
為oidc,因?yàn)樵谟脩舻卿洉r(shí),使用OpenID Connect 的防范炊林。 - 使用
AddCookie
添加為處理Cookie 的程序彩倚。 -
AddOpenIdConnect
用來(lái)配置OpenID Connect協(xié)議的處理程序筹我。
同處修改 Configure
方法,將授權(quán)加入中間件帆离。
public void Configure(IApplicationBuilder app, IHostingEnvironment env)
{
if (env.IsDevelopment())
{
app.UseDeveloperExceptionPage();
}
else
{
app.UseExceptionHandler("/Home/Error");
}
app.UseAuthentication();
app.UseStaticFiles();
app.UseMvcWithDefaultRoute();
}
2.1.3 在需要認(rèn)證登錄的控制器或者Action加入Authorize
標(biāo)簽蔬蕊。
在視圖中加入如下代碼,展示授權(quán)信息
<dl>
@foreach (var claim in User.Claims)
{
<dt>@claim.Type</dt>
<dd>@claim.Value</dd>
}
</dl>
原文文檔:https://identityserver4.readthedocs.io/en/release/quickstarts/3_interactive_login.html