IdentityServer4 -OpenID Connect 模式

1 什么是OIDC

OIDC 是对OpenID Connect 的检查,OIDC=(Identity ,Autjentication)+OAuth 2.0.


OIDC

博文参考:https://www.cnblogs.com/linianhui/p/openid-connect-core.html

2 创建一个MVC 客户端

授权服务端采用之前的服务端 (代码已经上传,点击下载) 服务中心项目为 IdentityServer.ServerMVC

2.1.1新建一个 ASP.NET Core 网站 IdentityServer.ClientMVC,选择不要授权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";//授权服务中心
            options.RequireHttpsMetadata = false;

            options.ClientId = "mvc";//授权服务分配的ClientId
            options.SaveTokens = true;
        });
}
  • AddAuthentication 注入授权服务到容器中,用Cookie 作为验证用户的方法(通过Cookies设置于为DefaultScheme).
  • 设置DefaultChallengeScheme为oidc,因为在用户登录时,使用OpenID Connect 的防范。
  • 使用AddCookie添加为处理Cookie 的程序。
  • AddOpenIdConnect 用来配置OpenID Connect协议的处理程序。

同处修改 Configure方法,将授权加入中间件。

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 在需要认证登录的控制器或者Action加入Authorize标签。
在视图中加入如下代码,展示授权信息

@foreach (var claim in User.Claims) {
@claim.Type
@claim.Value
}

原文文档:https://identityserver4.readthedocs.io/en/release/quickstarts/3_interactive_login.html

你可能感兴趣的:(IdentityServer4 -OpenID Connect 模式)