Abp配置文件设置IdentityServer客户端

Abp配置文件设置IdentityServer客户端在没有购买商业版,又没实现IdentityServer配置管理页功能时,我们又得配置客户端时。设想通过appsettings.json,临时添加配置,然后执行.DbMigrator迁移数据。这时原

大家好,又见面了,我是你们的朋友全栈君。

在没有购买商业版,又没实现IdentityServer配置管理页功能时,我们又得配置客户端时。
设想通过appsettings.json,临时添加配置,然后执行.DbMigrator迁移数据。
这时原版代码需要以下改动:

修改.Domain项目中IdentityServerDataSeedContributor类的CreateClientsAsync方法。

private async Task CreateClientsAsync()
{
    var commonScopes = new[]
    {
        "email",
        "openid",
        "profile",
        "role",
        "phone",
        "address"
    };

    var configurationSection = _configuration.GetSection("IdentityServer:Clients");

    foreach (var section in configurationSection.GetChildren())
    {
        var clientId = section["ClientId"];
        var secret = (section["ClientSecret"] ?? "123456").Sha256();
        var rootUrl = section["RootUrl"].EnsureEndsWith('/');
        var grantTypes = (section["GrantTypes"] ?? "client_credentials").Split();
        var redirectUri = section["RedirectUri"] ?? $"{rootUrl}signin-oidc";
        var postLogoutRedirectUri = section["PostLogoutRedirectUri"] ?? $"{rootUrl}signout-callback-oidc";
        var frontChannelLogoutUri = section["FrontChannelLogoutUri"] ?? rootUrl;
        var requireClientSecret = (section["RequireClientSecret"] ?? "False").To<bool>();
        var requirePkce = (section["RequirePkce"] ?? "False").To<bool>();
        var corsOrigins = new[] { rootUrl.RemovePostFix("/") };

        await CreateClientAsync(
            name: clientId,
            scopes: commonScopes,
            grantTypes: grantTypes,
            secret: secret,
            redirectUri: redirectUri,
            postLogoutRedirectUri: postLogoutRedirectUri,
            frontChannelLogoutUri: frontChannelLogoutUri,
            requireClientSecret,
            requirePkce,
            corsOrigins: corsOrigins
        );
    }
}

修改.DbMigrator项目中appsettings.json为:

{
    "ConnectionStrings": {
        "Default": "Server=(LocalDb)\\MSSQLLocalDB;Database=IdentityServer;Trusted_Connection=True;"
    },
    "IdentityServer": {
        "Clients": {
            "TestClient.Mvc": {
                "ClientId": "TestClient.Mvc",
                "ClientSecret": "TestClient.Mvc",
                "RootUrl": "https://localhost:53279",
                "GrantTypes": "authorization_code",
                "RequirePkce": true
            },
            "MyProject_Web": {
                "ClientId": "MyProject_Web",
                "ClientSecret": "1q2w3e*",
                "RootUrl": "https://localhost:44393",
                "GrantTypes": "hybrid",
                "FrontChannelLogoutUri": "https://localhost:44393/Account/FrontChannelLogou"
            },
            "MyProject_App": {
                "ClientId": "MyProject_App",
                "ClientSecret": "1q2w3e*",
                "RootUrl": "http://localhost:4200",
                "GrantTypes": "password client_credentials authorization_code"
            },
            "MyProject_Blazor": {
                "ClientId": "MyProject_Blazor",
                "RootUrl": "https://localhost:44307",
                "GrantTypes": "authorization_code",
                "RedirectUri": "https://localhost:44307/authentication/login-callback",
                "PostLogoutRedirectUri": "https://localhost:44307/authentication/logout-callback"
            },
            "MyProject_Swagger": {
                "ClientId": "MyProject_Swagger",
                "ClientSecret": "1q2w3e*",
                "RootUrl": "https://localhost:44399",
                "GrantTypes": "authorization_code",
                "redirectUri": "https://localhost:44399/swagger/oauth2-redirect.html"
            }
        }
    }
}

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/155575.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)


相关推荐

  • java finalize逃脱_java finalize方法详解[通俗易懂]

    java finalize逃脱_java finalize方法详解[通俗易懂]1.finalize的作用finalize()是Object的protected方法,子类可以覆盖该方法以实现资源清理工作,GC在回收对象之前调用该方法。finalize()与C++中的析构函数不是对应的。C++中的析构函数调用的时机是确定的(对象离开作用域或delete掉),但Java中的finalize的调用具有不确定性不建议用finalize方法完成“非内存资源”的清理工作,但建议用于:①…

  • pycharm运行记录_pycharm多行注释

    pycharm运行记录_pycharm多行注释文章目录认识poetrywindow下安装poetrypoetry的使用pycharm中配置poetry环境待补充知识点认识poetrypoetry是一个Python虚拟环境和依赖管理工具,它允许您声明项目所依赖的库,它将为您管理(安装/更新)它们,类似的还有pnm安装所需python版本python3.6+,python2.7和python3.5由于不在维护,所以尽量不要安装。window下安装poetrypowershell下安装:(Invoke-WebRequest-Urihtt

  • 应届毕业生java面试准备_Java应届生面试

    应届毕业生java面试准备_Java应届生面试应届没工作经验的可以看看。背景介绍:非名校,软件工程专业,无相关工作经验,实际编程只有在学校学习时。刚刚毕业,找工作中。大家都知道,开发这一行没有工作经验相当的吃亏,如果没有丰富的知识,对知识良好的理解,与优秀的自学能力,很难找到工作。经过近一个月的面试,总结一些信息。面试过程…

  • 如何查看linux系统内核版本_centos7内核版本

    如何查看linux系统内核版本_centos7内核版本1.查看Linux系统版本cat/etc/issue或者cat/etc/redhat-release示例:[root@localhostgrafana]#cat/etc/issueCentOSrelease6.5(Final)Kernel\ronan\m2.查看Linu

  • live555源代码概述「建议收藏」

    live555源代码概述「建议收藏」
    live555源代码概述2010年01月29日星期五13:03liveMedia项目(http://www.live555.com/)的源代码包括四个基本的库,各种测试代码以及MediaServer。四个基本的库分别是:UsageEnvironment&TaskScheduler,groupsock,liveMedia和BasicUsageEnvironment。 

    UsageEnvironment和TaskScheduler类用于事件的调度,实现异步读取事件的

  • 风控模型开发全流程

    风控模型开发全流程本篇我们对开发金融风控模型做一个总结,先给出流程图:建立模型,当然需要数据,金融风控的数据一般来源于内部与外部,内部是在公司业务系统内已有的,外部主要靠采购三方数据扩展。三方数据的采集标…

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号