首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

如何在IdentityServer4中配置多个Oidc提供程序

在IdentityServer4中配置多个Oidc提供程序可以通过以下步骤完成:

  1. 添加Oidc提供程序的配置:在IdentityServer的配置文件中,添加每个Oidc提供程序的配置。配置包括提供程序的名称、客户端ID、客户端密钥、授权终结点、令牌终结点等信息。例如:
代码语言:txt
复制
services.AddIdentityServer()
    .AddInMemoryClients(new List<Client>
    {
        new Client
        {
            ClientId = "client1",
            ClientSecrets = { new Secret("secret1".Sha256()) },
            AllowedGrantTypes = GrantTypes.Code,
            RedirectUris = { "https://client1/callback" },
            PostLogoutRedirectUris = { "https://client1/logout" },
            AllowedScopes = { "openid", "profile", "email" },
            RequireConsent = false
        },
        new Client
        {
            ClientId = "client2",
            ClientSecrets = { new Secret("secret2".Sha256()) },
            AllowedGrantTypes = GrantTypes.Code,
            RedirectUris = { "https://client2/callback" },
            PostLogoutRedirectUris = { "https://client2/logout" },
            AllowedScopes = { "openid", "profile" },
            RequireConsent = false
        }
    })
    .AddInMemoryIdentityResources(new List<IdentityResource>
    {
        new IdentityResources.OpenId(),
        new IdentityResources.Profile(),
        new IdentityResources.Email()
    })
    .AddInMemoryApiResources(new List<ApiResource>())
    .AddInMemoryApiScopes(new List<ApiScope>());
  1. 配置IdentityServer的端点:在Startup类的Configure方法中,配置IdentityServer的端点。例如:
代码语言:txt
复制
app.UseIdentityServer();

app.UseEndpoints(endpoints =>
{
    endpoints.MapDefaultControllerRoute();
    endpoints.MapGet("/.well-known/openid-configuration", async context =>
    {
        var discoveryDocument = new DiscoveryDocumentResponse
        {
            Issuer = "https://identityserver",
            AuthorizationEndpoint = "https://identityserver/connect/authorize",
            TokenEndpoint = "https://identityserver/connect/token",
            UserInfoEndpoint = "https://identityserver/connect/userinfo",
            EndSessionEndpoint = "https://identityserver/connect/endsession",
            JwksUri = "https://identityserver/.well-known/jwks"
        };

        await context.Response.WriteAsJsonAsync(discoveryDocument);
    });
});
  1. 配置客户端应用程序:在客户端应用程序中,配置每个Oidc提供程序的选项。选项包括提供程序的授权终结点、令牌终结点、客户端ID、客户端密钥等信息。例如:
代码语言:txt
复制
services.AddAuthentication(options =>
{
    options.DefaultScheme = "Cookies";
    options.DefaultChallengeScheme = "oidc";
})
.AddCookie("Cookies")
.AddOpenIdConnect("oidc", options =>
{
    options.Authority = "https://identityserver";
    options.ClientId = "client1";
    options.ClientSecret = "secret1";
    options.ResponseType = "code";
    options.Scope.Add("openid");
    options.Scope.Add("profile");
    options.Scope.Add("email");
    options.SaveTokens = true;
});

以上是在IdentityServer4中配置多个Oidc提供程序的基本步骤。根据实际需求,可以根据以上示例进行配置的修改和扩展。关于IdentityServer4的更多详细信息和配置选项,可以参考腾讯云的IdentityServer4文档

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

Asp.Net Core IdentityServer4 的基本概念

OAuth 2.0侧重于客户端开发人员的简单性,同时为web应用程序、桌面应用程序、移动应用等提供特定的授权流。该规范及其扩展正在IETF OAuth工作组内开发。...,OIDC=(Identity, Authentication) + OAuth 2.0。...我们都知道OAuth2是一个授权协议,它无法提供完善的身份认证功能,OIDC使用OAuth2的授权服务器来为第三方客户端提供用户的身份认证,并把对应的身份认证信息传递给客户端,且可以适用于各种类型的客户端...(网站、本地应用、移动端、服务)做集中式的登录逻辑和工作流控制。...IdentityServer是完全实现了OpenID Connect协议标准•Single Sign-on / Sign-out:在多个应用程序类型上进行单点登录和单点退出。

1.1K10
  • 基于OIDC(OpenID Connect)的SSO

    客户端需要使用oidc-server.dev提供的公钥来验证这个数字签名。 第7步:OIDC-Client - 接收第6步POST过来的参数,构建自身的登录状态 ?...在验证完成后,客户端就可以取出来其中包含的用户信息来构建自身的登录状态,比如上Set-Cookie=lnh.oidc这个cookie。然后清除第1步设置的名为nonce的cookie。...iframe是真正的调用已经登录的客户端进行登出的地址(IdentityServer4会记录下来已经登录的客户端,没有登陆过的和没有配置启用Front-Channel-Logout的则不会出现在这里)。...其中iframe指向的地址是OIDC客户端在oidc-server.dev中注册的时候配置的地址。参数则是动态附加上去的参数。...总结 本文介绍了基于OIDC实现的SSO的工作原理和流程,但并未涉及到OIDC的具体实现IdentityServer4的是如何使用的(这部分通过读我提供的源码应该是很容易理解的),旨在解释一下如何用OIDC

    3.1K100

    IdentityServer4 知多少

    允许用户授权第三方移动应用访问他们存储在其他服务商上存储的私密的资源(照片,视频,联系人列表),而无需将用户名和密码提供给第三方应用。...OAuth允许用户提供一个令牌而不是用户名和密码来访问他们存放在特定服务商上的数据。每一个令牌授权一个特定的网站内访问特定的资源(例如仅仅是某一相册的视频)。...然后客户端可以在请求添加Authorization头进行验证,其Value为身份验证的凭证信息。...,还可以添加其他身份认证服 务提供商 .AddOpenIdConnect("oidc", "OpenID Connect", options =>...回答完上面的问题,我们也就梳理出了配置要点: 添加身份认证中间件 启用Cookie进行会话保持 添加OIDC,使用我们自己定义的IdentityServer提供的认证服务 public void ConfigureServices

    3K20

    ASP.NET_.NET

    Identity Server4提供OIDC认证服务(服务端) ASP.NET Core的权限体系OIDC认证框架(客户端) 什么是 OIDC 在了解OIDC之前,我们先看一个很常见的场景...Identity Server4提供OIDC认证服务 Identity Server4是asp.net core2.0实现的一套oAuth2 和OIDC框架,用它我们可以很快速的搭建一套自己的认证和授权服务...过程 新建asp.net core web应用程序 添加identityserver4 nuget引用 依赖注入初始化 services.AddIdentityServer()...IdentityServer4.Models.GrantTypes这个枚举给我们提供了一些选项,实际上是把oAuth的4种和OIDC的3种进行了组保。...本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

    1.6K30

    【实战 Ids4】║ 又一个项目迁移完成(MVC)

    上边共涉及到了我开源的六个项目,三个后端,三个前端,想想这一年也是够可以了,但是在迁移的IdentityServer4,只用到了常用的两种模式,Implicit和Code模式,其实一般我们web开发,...当然,最后还有一个知识点,就是scope,如果想要自定义的话,需要先在claims中注册添加,然后在GetIdentityResources配置: // scopes define the resources...,咱们继续看看如何在MVC配置。...ddd域名: 错误信息是这样的: 但是在IIS配置,是一切正常的,真的是我学术不精啊,有小伙伴知道的,欢迎给我留言私信拍砖,这里我来个赏金(20大洋),给开源事业做贡献了。...: 常见的错误 刚刚上边我们已经遇到了两个错误,其实总的来说,都是配置的问题,我会在博客园单写一篇文章,来总结IdentityServer4的所有错误,目前还没有,过一段时间查看就行,现在开发的还比较少

    66220

    .NET Core微服务之基于IdentityServer建立授权与验证服务(续)

    :这里设置的默认模式是Bearer,其中AddIdentityServerAuthentication方法是将我们上一篇创建的授权服务器注册为token的处理人,即在本API程序涉及到token的处理...Identity": { "IP": "localhost", "Port": "5000", "Scheme": "Bearer" } }   此外,还需要在Configure方法配置...,ApiService02的配置类似,只是配置文件的信息从clientservice改为了productservice。...和API Service Client的设置不同的就是在AllowedScopes给它增加了OpenId和Profile,因为我们为MvcClient设定的是oidc而不是bearer的模式。...另外,如果是前后端分离的结构,也可以浏览一下ddrsql的《IdentityServer4之Implicit(隐式许可) —— oidc-client-js前后端分离》,里面介绍了oidc-client

    1.8K50

    基于IdentityServer4OIDC实现单点登录(SSO)原理简析

    但是,不知大家有没有体会,好像看了很多id4(IdentityServer4,下同)的文章,对: oidc究竟是个什么蛤蟆? OAuth2.0和OpenId Connect究竟有啥区别?...啥是SSOSSO,全称Single sign-on :在多个应用系统,只需要登录一次,就可以访问其他相互信任的应用系统。...SSO--基于Id4的OIDC实现简析 先准备环境 把官方samples下下来:https://github.com/IdentityServer/IdentityServer4/tree/master...我们先看看这些参数 client_id:ssoimplicit //我们前面配置的clinenid= reponse_mode:form_post //指示oidc服务器返回数据的形式是form表单...redirect_uri:http://sso.client.net/signin-oidc //认证成功后的回调地址,就是我们配置里面的 授权端点有很多功能,这里主要做了两件事: 先判断待过来的参数是否合法

    4.5K20

    【One by One系列】IdentityServer4(四)授权码流程

    这种方式广泛用于大厂的开放平台,微信、华为等等。 这种方式的安全性最高,因为它是server-server,即web应用的后端与IdentityServer交互通信,token都是存储在后端。...,大致也是这个流程,但是其中会有一些变化,为了安全,IdentityServer4是带有PKCE支持的授权码模式,后续我们会讲到,先让我们实践一下,感受一下。...environmentVariables": { "ASPNETCORE_ENVIRONMENT": "Development" } } } } 1.4 增加客户端配置...对于像IdentityServer这样的身份认证服务,清除本地应用程序cookie是不够的。还需要往返于IdentityServer以清除中央单点登录的session。...在控制器增加退出操作代码: public IActionResult Logout() { return SignOut("Cookies", "oidc"); } 在视图层_Layout.cshtml

    1.9K20

    何在一个Docker同时运行多个程序进程?

    我们都知道Docker容器的哲学是一个Docker容器只运行一个进程,但是有时候我们就是需要在一个Docker容器运行多个进程 那么基本思路是在Dockerfile 的CMD 或者 ENTRYPOINT...minimal init system for Linux containers 一个最小化的Linux容器初始化系统 dumb-init是一个简单的进程监控器和init系统,设计为在最小容器环境(Docker...)作为PID 1运行。...,配置文件要有,如果是后台的方式docker会退出 [supervisord] nodaemon=true Dockerfile 参考 ENTRYPOINT ["supervisord", "-c",...作为基础镜像的时候推荐使用Skaware S6 参考这个微服务基础镜像 https://github.com/nicholasjackson/microservice-basebox 他就是用 Skaware 作为进程守护程序运行多个进程的

    15.3K30

    IdentityServer4实战 - AccessToken 生命周期分析

    一.前言 IdentityServer4实战这个系列主要介绍一些在IdentityServer4(后文称:ids4),在实际使用过程容易出现的问题,以及使用技巧,不定期更新,谢谢大家关注。...我们都知道OAuth2是一个授权协议,它无法提供完善的身份认证功能,OIDC使用OAuth2的授权服务器来为第三方客户端提供用户的身份认证,并把对应的身份认证信息传递给客户端,且可以适用于各种类型的客户端...OAuth2提供了Access Token来解决授权第三方客户端访问受保护资源的问题;OIDC在这个基础上提供了ID Token来解决第三方客户端标识用户身份认证的问题。...OIDC的核心在于在OAuth2的授权流程,一并提供用户的身份认证信息(ID Token)给到第三方客户端,ID Token使用JWT格式来包装,得益于JWT(JSON Web Token)的自包含性...六.写在最后 在实际生产环境,一定要尽量保持各个服务,各个节点的时间同步,使用标准时间。然后这个时间偏移没有特殊需求不建议去更改它,这个就是这样设计的,官方也是不推荐去更改它。

    1.7K20

    .Net 5.0 通过IdentityServer4实现单点登录之id4部分源码解析

    前文.Net 5.0 通过IdentityServer4实现单点登录之oidc认证部分源码解析介绍了oidc组件整合了相关的配置信息和从id4服务配置节点拉去了相关的配置信息和一些默认的信息,生成了OpenIdConnectMessage...using IdentityServer4; using IdentityServerHost.Quickstart.UI; using Microsoft.AspNetCore.Builder; using...var options = context.RequestServices.GetRequiredService(); //获取配置的认证方案...,说明这里认证方案是可以自定义的,但是demo并没有配置,且在StratUp类ConfigureServices方法配置IdentityServer4时,默认采用的就是Cookie认证方案,其认证方案名称为...,id4官方提供了ef core实现,当然这里可以选择重写,Dapper.

    94020

    IdentityServer4学习及简单使用

    本文,主要用来记录IdentityServer4的简单使用。 一....通常你可以构建(或重新使用)包含登录和注销页面的应用程序,IdentityServer中间件会向其添加必要的协议头,以便客户端应用程序可以使用这些标准协议与其对话。 ?...使用nuget管理器,添加IdentityServer4 ,并且修改StartUp.cs 修改StartUp.cs的Configure方法 public void Configure(IApplicationBuilder...需要对其进行配置,而这个配置主要包含三个信息: 哪些api可以使用这个AuthorizationServer 哪些client可以使用这个AuthorizationServer 哪些User可以被这个AuthorizationServer...和API Service Client的设置不同的就是AllowedScopes给它增加了OpenId和Profile,因为我们为MvcClient设定的是oidc而不是bearer模式。

    1.4K20

    【One by One系列】IdentityServer4(五)创建JavaScript客户端

    按照OAuth2.0的4种授权方式,接下来应该介绍隐藏式(implicit),与之对应的OpenId Connect Flow的Implicit Flow,但是IdentityServer4官方最新文档没有明言...ASPNETCORE_ENVIRONMENT": "Development" } } } } 1.3 添加 ‘静态文件中间件’ 该项目是为客户端运行而设计的,我们只需要ASP.NET Core提供构成我们的应用程序的静态...Configure(IApplicationBuilder app) { app.UseDefaultFiles(); app.UseStaticFiles(); } 这个中间件现在将提供应用程序的...**~/wwwroot**文件夹的静态文件。...1.4 oidc-client library下载 在上篇,我们使用了一个库去处理OpenID Connect 协议,在JavaScript,我们同样需要类似的库,只不过现在需要这个库能够在JavaScript

    1.3K10

    ASP.NET Core的身份认证框架IdentityServer4(9)-使用OpenID Connect添加用户认证

    然后我们使用AddCookie添加可以处理Cookie的处理程序。 最后,AddOpenIdConnect用于配置执行OpenID Connect协议的处理程序。...与OAuth相反,OIDC的范围不代表API,而是代表用户ID,姓名或电子邮件地址等身份信息。...然后,您需要将这些身份资源添加到Startup.cs的IdentityServer配置。...但是由于OIDC的流程始终是交互式的,我们需要在配置添加一些重定向URL。...最后浏览器重定向到客户端应用程序,该应用程序显示了用户的声明。 ? 在开发过程,您有时可能会看到一个异常,说明令牌无法验证。 这是因为签名密钥信息是即时创建的,并且只保存在内存

    3.4K30
    领券