调用identityServer4服务端的自定义api接口

1、添加apiresource[下面标红的那一行]

复制代码
        public static IEnumerable<ApiResource> GetApis()
        {
            var apiClients = SysCore.ConfigHelper.GetSectionApiSites();
            List<ApiResource> lstResult = new List<ApiResource>();
            foreach (var client in apiClients)
            {
                string displayName = client.ClientName;
                string scope = client.Scope;
                ApiResource oneResult = new ApiResource(scope, displayName);
                lstResult.Add(oneResult);
            }
            lstResult.Add(new ApiResource(IdentityServerConstants.LocalApi.ScopeName));
            return lstResult;
        }
复制代码

2、在客户端里添加允许[下面标红的那一行]

复制代码
                else if (client.ClientType == "html")
                {
                    Client oneResult = new Client
                    {
                        ClientId = client.ClientId,
                        ClientName = client.ClientName,
                        AllowedGrantTypes = GrantTypes.ResourceOwnerPassword,
                        ClientSecrets = { new Secret("12121212".Sha256()) },
                        AllowOfflineAccess = true,
                        RequireConsent = false,
                        RequireClientSecret = false,
                        AllowedScopes =
                        {
                            IdentityServerConstants.StandardScopes.OpenId,
                            IdentityServerConstants.StandardScopes.Profile,
                            IdentityServerConstants.StandardScopes.OfflineAccess,
                            "role",
                            "CommonAPI",
                            IdentityServerConstants.LocalApi.ScopeName
                        }
                    };
                    lstResult.Add(oneResult);
                }
复制代码

3、在需要验证的服务端自建的api上加

    [Authorize(LocalApi.PolicyName)]
    public class RoleController : ControllerBase
    {
        private readonly UserManager<IdentityUser> _userManager;
        private readonly RoleManager<IdentityRole> _roleManager;
     .......

 4、在ConfigureServices里添加下面的代码

复制代码
            services.AddLocalApiAuthentication();
            services.AddAuthorization(options =>
            {
                options.AddPolicy(IdentityServerConstants.LocalApi.PolicyName, policy =>
                {
                    policy.AddAuthenticationSchemes(IdentityServerConstants.LocalApi.AuthenticationScheme);
                    policy.RequireAuthenticatedUser();
                });
            });
复制代码

5、在Configure里添加下面这行

  app.UseAuthentication();

 

posted @   星星c#  阅读(308)  评论(0编辑  收藏  举报
编辑推荐:
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 三行代码完成国际化适配,妙~啊~
· .NET Core 中如何实现缓存的预热?
点击右上角即可分享
微信分享提示