• IdentityServer4隐藏模式


    隐藏模式无需赘述。

    1:新增client

     new Client()
                    {
                        //客户端Id
                         ClientId="apiClientImpl",
                         ClientName="ApiClient for Implicit",
                         //客户端授权类型,Implicit:隐藏模式
                         AllowedGrantTypes=GrantTypes.Implicit,
                         //允许登录后重定向的地址列表,可以有多个
                        RedirectUris = {"https://localhost:5004/auth.html" },
                         //允许访问的资源
                         AllowedScopes={
                            "secretapi"
                        },
                         //允许将token通过浏览器传递
                         AllowAccessTokensViaBrowser=true
                    },
    

     2:安装QuickStartUI

    微软为IdentityServer4创建了一系列的模板,可以在命令行中使用dotnet new -IdentityServer4.Templates安装。然后在IdentityServer项目根据目录下打开命令行,运行dotnet new is4ui 安装IdentityServer的ui模板。会自动添加Quickstart、wwwroot、Views三个文件夹到此目录。

     修改StartUP.cs代码

      services.AddMvc();

    添加中间件

              app.UseRouting();
    
                app.UseIdentityServer();
                //访问wwwroot目录静态文件
                app.UseStaticFiles();
                app.UseAuthentication();
                app.UseAuthorization();
    
                app.UseEndpoints(endpoints =>
                {
                    endpoints.MapDefaultControllerRoute();
                });
    

     3:在客户端新增html网页

    代码如下

    <!DOCTYPE html>
    <html>
    <head>
        <meta charset="utf-8" />
        <title></title>
        <script type="text/javascript">
            var token = null;
            window.onload = function () {
                var url = window.location.href;
     
                var array = url.split("#");
                if (array.length > 1) {
                    token = array[1];
                 document.getElementById("content").innerHTML = token;
                }
            }
        </script>
    </head>
    <body>
        <div id="content"></div>
    </body>
    </html>
    

      4:获取token。

    接受参数的地址则是IdentityServer的Discover文档中的authorization_endpoint节点。把参数和地址拼接成以下地址:http://localhost:5000/connect/authorize?client_id=apiClientImpl&redirect_uri=https://localhost:5004/auth.html&response_type=token&scope=secretapi,直接访问,会跳转到用户登录页面

     登录之后即可获取token

     这个token就可以使用了。

    参考文章:https://www.cnblogs.com/liujiabing/p/11474131.html

    附:如果遇到登录不跳转的情况,可以通过F12查看。

     我遇到的时候cookie设置的问题。

    这种情况需要设置cookie

    public void ConfigureServices(IServiceCollection services)
            { 
                services.AddControllersWithViews();
                 
                // 配置cookie策略
                services.Configure<CookiePolicyOptions>(options =>
                {
                    //https://docs.microsoft.com/zh-cn/aspnet/core/security/samesite?view=aspnetcore-3.1&viewFallbackFrom=aspnetcore-3
                    options.MinimumSameSitePolicy = Microsoft.AspNetCore.Http.SameSiteMode.Lax;
                });
            }
     public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
            {
                ....
                app.UseCookiePolicy();
                ....
            }
    

      参考文章:https://www.cnblogs.com/jellydong/p/13542474.html

  • 相关阅读:
    微信公众平台入门到精通-新浪云计算平台注册和使用
    PhpStorm快捷键设置/个性化设置,如何多项目共存?如何更换主题?
    10个免费的PHP编辑器/开发工具
    php利用PHPExcel类导出导入Excel用法
    PHP遍历数组的几种方法
    SQLSTATE[HY000] [2003] Can't connect to MySQL server on 'XXX' (13)
    CentOS下Apache虚拟主机配置
    centos下vsftpd登录后无法看见文件,无法创建文件及文件夹
    Linux开启MySQL远程连接
    php禁止某ip或ip地址段访问的方法(转载)
  • 原文地址:https://www.cnblogs.com/fanlin92/p/15237024.html
Copyright © 2020-2023  润新知