• 二、IDS4配置服务


     它是根据定义配置服务Config.cs文件来生成客户端和API使用该服务所需的配置数据。

    一、IDS4签名服务

    1、为项目添加NuGet包。

    2、IDS4服务制定的配置Config.cs。

    using IdentityServer4.Models;
    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Threading.Tasks;
    
    namespace ids4
    {
        //一、IDS4服务制定
        public class Config
        {
            //1、定义API资源
            public static IEnumerable<ApiResource> GetApis() //ApiResource是属于using IdentityServer4.Models;内的。
            {
                return new List<ApiResource>
                {
                    new ApiResource("api1", "My API")
                };
            }
            //2、定义客户端
            public static IEnumerable<Client> GetClients()
            {
                return new List<Client>
                {
                    new Client
                    {
                        ClientId = "client",
                        // no interactive user, use the clientid/secret for authentication
                        AllowedGrantTypes = GrantTypes.ClientCredentials,
                        // secret for authentication
                        ClientSecrets =
                        {
                           new Secret("secret".Sha256())
                        },
                        // scopes that client has access to
                        AllowedScopes = { "api1" }
                    }
                };
            }
        }
    } 

    3、Startup.cs内添加IDS4服务。

    using IdentityServer4.Models;
    using Microsoft.AspNetCore.Builder;
    using Microsoft.AspNetCore.Hosting;
    using Microsoft.AspNetCore.Http;
    using Microsoft.AspNetCore.Mvc;
    using Microsoft.Extensions.Configuration;
    using Microsoft.Extensions.DependencyInjection;
    
    namespace ids4
    {
        //二、添加IDS4服务
        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);
    
                //1、注入服务添&加在最底部
                var builder = services.AddIdentityServer()
                //.AddInMemoryIdentityResources(Config.GetIdentityResources())  //注入GetIdentityResources资源。
                .AddInMemoryApiResources(Config.GetApis()) //注入ApiResources资源对应定义的API资源。
                .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)
            {
                app.UseIdentityServer();//2、添加服务&添加在顶部
    
                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?}");
                });
            }
        }
    }

    4、运行服务器并浏览浏览器 http://localhost:5000/.well-known/openid-configuration 您应该会看到所谓的发现文档。客户端和API将使用它来下载必要的配置数据。

    {
        "issuer": "http://localhost:5000",
        "authorization_endpoint": "http://localhost:5000/connect/authorize",
        "token_endpoint": "http://localhost:5000/connect/token",
        "userinfo_endpoint": "http://localhost:5000/connect/userinfo",
        "end_session_endpoint": "http://localhost:5000/connect/endsession",
        "check_session_iframe": "http://localhost:5000/connect/checksession",
        "revocation_endpoint": "http://localhost:5000/connect/revocation",
        "introspection_endpoint": "http://localhost:5000/connect/introspect",
        "device_authorization_endpoint": "http://localhost:5000/connect/deviceauthorization",
        "frontchannel_logout_supported": true,
        "frontchannel_logout_session_supported": true,
        "backchannel_logout_supported": true,
        "backchannel_logout_session_supported": true,
        "scopes_supported": ["api1", "offline_access"],
        "claims_supported": [],
        "grant_types_supported": ["authorization_code", "client_credentials", "refresh_token", "implicit", "urn:ietf:params:oauth:grant-type:device_code"],
        "response_types_supported": ["code", "token", "id_token", "id_token token", "code id_token", "code token", "code id_token token"],
        "response_modes_supported": ["form_post", "query", "fragment"],
        "token_endpoint_auth_methods_supported": ["client_secret_basic", "client_secret_post"],
        "subject_types_supported": ["public"],
        "id_token_signing_alg_values_supported": ["RS256"],
        "code_challenge_methods_supported": ["plain", "S256"]
    }
  • 相关阅读:
    HTML总结
    Java 基础知识总结 (三、运算符)
    关于JS 事件冒泡和onclick,click,on()事件触发顺序
    Java 基础知识总结 (四、String)
    Java 基础知识总结 (二、基本数据类型)
    websocket实例(显示文件导入处理进度)
    Java 基础知识总结 (一、标识符)
    Java Calendar 注意事项
    Ajax调用SpringMVC ModelAndView 无返回情况
    关于Ajax load页面中js部分$(function(){})的执行顺序
  • 原文地址:https://www.cnblogs.com/fger/p/10905152.html
Copyright © 2020-2023  润新知