You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

基于IdentityServer4实现双登录及令牌验证的技术疑问

问题说明

我的Web API支持两种登录方式:

  • 应用内登录
  • 对接某私有企业的专属SSO

我已使用IdentityServer4实现认证服务,但遇到以下三个挑战:

  1. 不清楚如何为IdentityServer集成该企业专属SSO
  2. 需要能够使用IdentityServer端点验证令牌(令牌可由自身应用或该企业SSO颁发)
  3. 存在两个/.well-known/openid-configuration地址,接收用户信息时无法判断应向自身IdentityServer还是该SSO服务器请求

Program.cs 代码片段

services.AddIdentityServer(opt =>
            {
                opt.EmitStaticAudienceClaim = true;
            }).AddInMemoryClients(IdentityServerConfigs.Clients)
                .AddInMemoryIdentityResources(IdentityServerConfigs.IdentityResources)
                .AddInMemoryApiScopes(IdentityServerConfigs.ApiScopes)
                .AddInMemoryApiResources(IdentityServerConfigs.ApiResources)
                .AddAspNetIdentity<User>()
                .AddProfileService<CustomProfileService>()
                .AddExtensionGrantValidator<CustomSecurityStampValidator>()
                .AddSigningCredential(crt);

IdentityServerConfigs.cs 代码片段

public static IEnumerable<Client> Clients =>
        [
            new Client()
            {
                AllowedGrantTypes = CustomGrantTypes.SecurityStamp_Credentials,
                ClientId = "****",
                ClientSecrets = [new Secret("****".Sha256())],
                //refresh Token
                AllowOfflineAccess = true,
                AccessTokenLifetime=3600, //1h
                RefreshTokenUsage=TokenUsage.ReUse,
                RefreshTokenExpiration=TokenExpiration.Sliding,
                
                AllowedScopes = [
                    "roles",
                    IdentityServerConstants.StandardScopes.OpenId,
                    IdentityServerConstants.StandardScopes.Profile,
                    ],
            }
        ];

内容的提问来源于stack exchange,提问作者Alireza Molaei

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.19 05:58:23