【问题标题】:Can we keep both web client & jsreport server both authentication with identity server 4我们可以同时保持 Web 客户端和 jsreport 服务器都使用身份服务器进行身份验证 4
【发布时间】:2018-03-27 22:44:55
【问题描述】:

您好,我正在尝试通过身份服务器 4(示例:“jsreport-with-authorization-server-sample”)实现身份验证,我可以在其中设置 Web 应用程序客户端和带有身份验证服务器的 jsreport 服务器。但问题是这里我们必须删除管理部分:

"authentication": { 
   "admin": {
   "username": "admin",
   "password": "password"
}

添加

"authorizationServer": {
    "tokenValidation": {
    "endpoint": "http://localhost:5000/connect/introspect",
    "usernameField": "username",
    "activeField": "active",
    "scope": {
    "valid": ["jsreport"]
},
"auth": {
     "type": "basic",
     "basic": {
     "clientId": "jsreport",
     "clientSecret": "secret"
    }
   }
  }
 },
 "enabled": true
} 

现在我们可以在不登录的情况下从 jsreport 服务器执行报告。我的问题是,我们能否让客户端和报表服务器都使用身份服务器 4 进行身份验证?

【问题讨论】:

    标签: authentication jsreport


    【解决方案1】:

    是的,您可以同时保留授权服务器的身份验证和正常的 jsreport 登录。

    您只需要保留authentication 配置的admin 选项。

    使用这样的配置:

    {
      ...
      "authentication": {
        "cookieSession": {
          "secret": "<your strong secret>"
        },
        "admin": {
          "username": "admin",
          "password": "password"
        },
        "authorizationServer": {
          "tokenValidation": {
            "endpoint": "http://jsreport-sample.com:5000/connect/introspect",
            "usernameField": "username",
            "activeField": "active",
            "scope": {
              "valid": ["jsreport"]
            },
            "auth": {
              "type": "basic",
              "basic": {
                "clientId": "jsreport",
                "clientSecret": "secret"
              }
            }
          }
        },
        "enabled": true
      }
      ...
    }
    

    您可以保持 jsreport studio 登录,也可以使用基于令牌的身份验证(委托给授权服务器)和普通的基本身份验证(由 jsreport 处理)从 http API 调用登录

    【讨论】:

    • 您好 BJR Matos 感谢您的回答,我尝试过这种方式,但发现 Web 客户端请求未经授权。不知道我是否错过了什么。
    • 我在数据库中有身份服务器 4 个用户,用户可以使用他们的凭据登录。如果我为工作室使用管理员,那么其他用户会从 jsreport 服务器获得未经授权的权限。我还需要在身份服务器 4 中添加管理员用户吗?
    • hmm 很奇怪,我没有尝试过没有指定管理员用户的情况,所以这里可能缺少一些东西。 authenticationServer 选项所做的只是将请求委托给另一台服务器,并且该服务器也应该使用 jsreport 用户实体中存在的用户进行响应,我猜当未定义 admin 时,正常的 jsreport auth + authorizationServer 选项无法正常工作,我会稍后尝试为此设置和测试一个案例。谢谢
    • 我可以在数据库中拥有任意数量的身份服务器用户,登录后他们将如何被 jsreport 服务器识别?它似乎只能定义身份服务器中未定义的管理员用户。
    • 是否有任何更新,在示例中我们收到错误:尝试从 jsreport 获取报告列表时出错:登录后单击“获取 jsreport 的配置文件和访问令牌”按钮时未授权由身份服务器用户
    猜你喜欢
    • 2011-11-04
    • 2012-08-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-02-05
    • 2013-06-18
    • 1970-01-01
    相关资源
    最近更新 更多