rest - 具有相同 REST 资源的多种身份验证方法
问题描述
假设您正在构建 REST API,这些 API 将从不同类型的消费者(人类用户、事物、不受信任的本地应用程序)访问,因此每个消费者都有自己的身份验证方法,用于技术或“历史”决策。
例如,用户使用具有某些声明模型的 JWT,而原生应用程序通过 Oauth2 流授权并使用 OAuth 令牌。虽然两者都希望访问相同的端点,因此应用程序需要区分不同模型的身份验证信息并将它们路由到适当的服务
添加 HTTP 标头“X-Auth-Method”并在每个传入请求时检查它很容易,但我问自己它是否足够 RESTful,最重要的是,会给第三方消费者带来问题想要集成他们的软件,并且必须知道/实现某种特定于供应商的行为。
另一种解决方案是提供不同的根端点
- api.myapp.com/v1/userapi
- api.myapp.com/v1/clientapi
然后让 API 网关将请求路由到适当的身份验证服务验证步骤,但实际上两者都公开完全相同的 API。
以 RESTful 方式并意识到构建开放生态系统时出现的所有问题会更正确吗?
解决方案
推荐阅读
- node.js - NodeJS 嵌套承诺
- php - 在 centos 的现有 apache 服务器(生产)上运行 laravel 项目
- javascript - 如何像在 IE 中一样在 Chrome 中禁用 A 超链接
- android - 在片段中比较两次不起作用
- reactjs - 如何在 Flatlist 中动态设置 react-native-material-menu
- python - 如何在仅包含列表中所有值的字典中查找所有键
- python - 执行makemigrations操作时出现Django“无法添加外键约束”错误
- python - 为什么 NLTK 的 PoS 标注器对单词中的每个字母进行标记,而不是对每个单词进行标记?
- javascript - 动态下载javascript并稍后执行
- eclipse - 行尾同居终端和 Eclipse Git