使用本地数据库的 WSO2 API 管理器最终用户自定义身份验证策略

如何解决使用本地数据库的 WSO2 API 管理器最终用户自定义身份验证策略

对于通过网络浏览器通过互联网访问的网络应用程序门户,需要在 WSO2 API 管理器中实现以下身份验证流程。

  • 应用程序(门户-Web 瘦客户端)的最终用户必须使用用户/密码方案登录。
  • 用户和凭据信息存储在本地应用程序 RDBMS 数据库(例如 MySQL)中。
  • 应用程序具有用户管理屏幕,用于添加/删除/更新用户和映射角色。
  • API 管理器必须针对本地用户存储对用户进行身份验证并生成 JWT/Ouath2 令牌。
  • 需要配置自定义密码策略(例如,用户必须在 5 次失败尝试后被锁定)。
  • 最终用户将使用生成的令牌访问受保护的 API。
  • API 管理器应授权令牌并将 API 路由到适当的微服务。

从文档中我们发现,应创建辅助用户存储以允许应用程序的最终用户成为 WSO2 API Manager 用户的一部分,因此身份验证将由 API 管理器本身负责。我想更好地了解如何实现这一点。

  1. 通过应用程序中的用户管理屏幕,最终用户数据库中的预期变化非常动态,这是否需要以某种方式更新到 API 管理器用户存储?或者可以配置 API 管理器用户存储直接从适用的用户表中读取。
  2. API 管理器能否针对每个用户执行在应用程序数据库中配置的加密密码验证?
  3. 是否有任何替代方法,例如,我的应用程序公开一个用于身份验证的休息端点,API 管理器调用此端点以通过传递作为令牌 API 的一部分接收到的用户名和密码来执行身份验证。?

解决方法

您可以将应用程序的用户存储作为 API 管理器中的辅助存储并实现您的要求。有关详细信息,请参阅有关配置 Secondary User-store 的官方文档。

此外,如果您有一个 JDBC 用户存储,那么您可以在 API 管理器中自定义辅助用户存储的查询以正确查询用户条目。此外,您还可以实现自定义 User-store manager 和插件(如果您有更多自定义字段和操作)。

回答您的问题

最终用户数据库中预期的更改通过应用程序中的用户管理屏幕非常动态,这是否需要以某种方式更新到 API 管理器用户存储?或者API管理器用户存储可以配置直接从适用用户的表中读取吗?

不,除非您没有正确配置用户存储,否则不需要在 API 管理器中执行任何手动更改。但是请注意,如果您打算使用应用程序用户商店中的用户创建 API 并在 API 平台中订阅,则删除这些用户可能会导致平台中的行为不一致。

API 管理器是否可以针对每个用户执行在应用程序数据库中配置的加密密码验证?

您可以编写自定义用户存储管理器来根据需要处理密码验证。

是否有任何替代方法,例如,我的应用程序公开一个用于身份验证的休息端点,API 管理器调用此端点以通过传递作为令牌 API 的一部分接收到的用户名和密码来执行身份验证。?

我可以想到一种替代 REST API 方法的方法。这是开发自定义处理程序并将其与 API 结合以执行除令牌验证之外的验证。简而言之,

  • 开发Synapse Handler
  • 使用 API 以及默认的 APIAuthenticationHandler
  • 从自定义处理程序的 Transport 标头中读取并提取 usernamepassword
  • 调用应用程序的 REST 端点并检查有效性
  • 如果成功,继续 API 调用(继续通常的令牌验证过程和所有),如果不成功,放弃并返回错误

但是,请注意,此外部验证过程需要足够快,以免长时间阻塞 API 管理器。

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

相关推荐


使用本地python环境可以成功执行 import pandas as pd import matplotlib.pyplot as plt # 设置字体 plt.rcParams['font.sans-serif'] = ['SimHei'] # 能正确显示负号 p
错误1:Request method ‘DELETE‘ not supported 错误还原:controller层有一个接口,访问该接口时报错:Request method ‘DELETE‘ not supported 错误原因:没有接收到前端传入的参数,修改为如下 参考 错误2:cannot r
错误1:启动docker镜像时报错:Error response from daemon: driver failed programming external connectivity on endpoint quirky_allen 解决方法:重启docker -> systemctl r
错误1:private field ‘xxx‘ is never assigned 按Altʾnter快捷键,选择第2项 参考:https://blog.csdn.net/shi_hong_fei_hei/article/details/88814070 错误2:启动时报错,不能找到主启动类 #
报错如下,通过源不能下载,最后警告pip需升级版本 Requirement already satisfied: pip in c:\users\ychen\appdata\local\programs\python\python310\lib\site-packages (22.0.4) Coll
错误1:maven打包报错 错误还原:使用maven打包项目时报错如下 [ERROR] Failed to execute goal org.apache.maven.plugins:maven-resources-plugin:3.2.0:resources (default-resources)
错误1:服务调用时报错 服务消费者模块assess通过openFeign调用服务提供者模块hires 如下为服务提供者模块hires的控制层接口 @RestController @RequestMapping("/hires") public class FeignControl
错误1:运行项目后报如下错误 解决方案 报错2:Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:3.8.1:compile (default-compile) on project sb 解决方案:在pom.
参考 错误原因 过滤器或拦截器在生效时,redisTemplate还没有注入 解决方案:在注入容器时就生效 @Component //项目运行时就注入Spring容器 public class RedisBean { @Resource private RedisTemplate<String
使用vite构建项目报错 C:\Users\ychen\work>npm init @vitejs/app @vitejs/create-app is deprecated, use npm init vite instead C:\Users\ychen\AppData\Local\npm-
参考1 参考2 解决方案 # 点击安装源 协议选择 http:// 路径填写 mirrors.aliyun.com/centos/8.3.2011/BaseOS/x86_64/os URL类型 软件库URL 其他路径 # 版本 7 mirrors.aliyun.com/centos/7/os/x86
报错1 [root@slave1 data_mocker]# kafka-console-consumer.sh --bootstrap-server slave1:9092 --topic topic_db [2023-12-19 18:31:12,770] WARN [Consumer clie
错误1 # 重写数据 hive (edu)> insert overwrite table dwd_trade_cart_add_inc > select data.id, > data.user_id, > data.course_id, > date_format(
错误1 hive (edu)> insert into huanhuan values(1,'haoge'); Query ID = root_20240110071417_fe1517ad-3607-41f4-bdcf-d00b98ac443e Total jobs = 1
报错1:执行到如下就不执行了,没有显示Successfully registered new MBean. [root@slave1 bin]# /usr/local/software/flume-1.9.0/bin/flume-ng agent -n a1 -c /usr/local/softwa
虚拟及没有启动任何服务器查看jps会显示jps,如果没有显示任何东西 [root@slave2 ~]# jps 9647 Jps 解决方案 # 进入/tmp查看 [root@slave1 dfs]# cd /tmp [root@slave1 tmp]# ll 总用量 48 drwxr-xr-x. 2
报错1 hive> show databases; OK Failed with exception java.io.IOException:java.lang.RuntimeException: Error in configuring object Time taken: 0.474 se
报错1 [root@localhost ~]# vim -bash: vim: 未找到命令 安装vim yum -y install vim* # 查看是否安装成功 [root@hadoop01 hadoop]# rpm -qa |grep vim vim-X11-7.4.629-8.el7_9.x
修改hadoop配置 vi /usr/local/software/hadoop-2.9.2/etc/hadoop/yarn-site.xml # 添加如下 <configuration> <property> <name>yarn.nodemanager.res