问题标签 [rest-security]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
android - 如何在后端验证请求
我正在创建一个支付 android 库(aar
),我必须确保我收到的所有请求back-end
都来自我的库而不是假库。
我该怎么做?
android - 无需登录身份验证即可在 Spring Boot 中保护 REST API
我目前正在构建一个 android 应用程序和一个后端 REST api。登录仅在 android 部分使用 fb 和 google 登录。
API 都是公开访问的。我应该如何保护我的后端 api,以便只有 android 应用程序可以访问它?
Basic Auth 和 OAUTH 甚至是不可能的,因为它需要 android 端的硬编码密码。
在此先感谢您的帮助。
rest - 使用 OAuth2 保护单体私有 REST api?
也许这个问题似乎是基于意见的,但我在决定保护 RESTful API时遇到了困难。
首先,我的用例:
我的应用程序非常简单:前端是使用 React.js(用于浏览器客户端)编写的,它将使用 RESTful API 从数据库(或其他东西)获取数据。API 是使用Spring 框架构建的。
此 API 不是公共 API,它只有一个客户端(目前,以后将是移动应用程序)。
现在让我们来谈谈安全问题。显然,我想保护我的 API,我使用 Spring-security 作为这项工作的工具。在学习的最初几天,我只知道基本身份验证。但是,当我继续阅读更安全的选项时,我学到了一些新奇的术语:
- 基于令牌的身份验证,使用 JWT
- OAuth2
- OpendId 连接
当我阅读更多来自Auth0、Okta等的博客时,我把一切都搞砸了。这让我三思而后行,是否应该使用 OAuth 来保护 REST API(不公开)。此外,几乎所有关于 OAuth 的博客都以社交登录为例。这让我更加困惑,OAuth 是为了让第三方应用程序访问您的 API。就是这样,不适用于我的用例。
然后我从一些渠道和博客中询问了一些专家,一些人说基本身份验证对于安全性来说已经足够了(使用 https),我应该避免使用 OAuth 来满足这么小的要求。其他人则相反,称 Basic-Auth 存在安全漏洞。
让我们考虑一下 OAuth 对我来说是完美的,但在这种情况下,我的授权服务器将驻留在哪里?因为教程仅通过将代码保持在同一层来解释授权服务器。没有单独的项目或其他东西。
JWT 对我的用户案例也有一些负面评价:
- 它们不能被撤销,只会自行过期。不是没有安全感吗?
- 与会话令牌或 cookie 相比,它们的大小很大
- 验证的高计算成本
我真的需要更多关于这方面的建议,这已经花了我很多周的时间。
谢谢。
java - 如何在没有弹簧安全的情况下使用 api 密钥保护 rest api
我有一个 rest api MyRestApi.war
,它是一个 spring boot 和 spring mvc 项目。
还有另一个 web 项目A.war
是一个普通的 spring 项目。它的前端如javascript
和后端java code
如需调用MyRestApi
。用户需要登录A.war
才能使用。
我不需要对 进行权限控制MyRestApi
,只有用户登录才能通过前端和后端A.war
访问MyRestApi
A.war
有一些解决方案,例如API key
, 。jwt
OAuth
我想尝试这三种方法,然后选择一种。
但是当我搜索类似的东西时api key authentication
,他们都习惯spring security
这样做。
那么如何在MyRestApi
没有弹簧安全的情况下使用 api 密钥进行保护。
rest - URL 中带有 .bat/.exe 的用户名 - 替代
我正在使用一个 URL,它接受 GET 调用的用户名。例如:https ://example.com/details/ <用户名>
但是,如果用户名包含“.bat”或“.exe”(例如:mm.baty - https://example.com/details/mm.baty),则可能存在一些安全问题。
在不影响安全问题的情况下,通过 URL 发送用户名有哪些建议。
谢谢您的帮助!
spring-boot - Spring 具有两种安全配置 - 失败的 API 登录重定向到表单登录页面。如何改变?
我有一个带有两种安全配置(两个WebSecurityConfigurerAdapter
)的 Spring Boot 应用程序,一种用于具有“ /api/**
”端点的 REST API,另一种用于所有其他端点的 Web 前端。安全配置在 Github 上,这里有一些相关部分:
JWTAuthenticationFilter
是一个自定义子类,它处理对 REST API的UsernamePasswordAuthenticationFilter
登录尝试(通过带有 JSON 正文的 HTTP POST /api/login
),如果成功,则在“授权”标头中返回 JWT 令牌。
所以这是问题所在:失败的登录尝试/api/login
(使用错误的凭据或缺少 JSON 正文)正在重定向到 HTML 登录表单/api/login
。对其他“”端点的未经身份验证的请求会/api/**
产生一个简单的 JSON 响应,例如:
未经身份验证的用户尝试访问其他受保护的 URL(不以“ /api/
”开头)重定向到登录表单/login
,这是所需的行为。但我不希望 API 调用/api/login
重定向到该表单!
如何为失败的 API 登录编写正确的行为? 这是为该过滤器添加新处理程序的问题吗?或者可能为我已经定义的某些行为添加排除项?
有关异常和处理的更多详细信息:
我查看了日志,针对错误凭据或格式错误的 JSON 引发的异常是org.springframework.security.authentication.AuthenticationException
. 日志显示,例如:
当我访问另一个 URL 时,例如一个不存在的 URL,例如/api/x
,它看起来非常不同。它非常冗长,但看起来服务器正在尝试重定向/error
并且没有发现它是授权 URL。有趣的是,如果我在 Web 浏览器中尝试此操作,我会使用我的自定义错误页面 (error.html) 格式化错误,但如果我使用 Postman 访问它,我只会收到一条 JSON 消息。日志示例:
所以看起来我可能需要做的是为 REST API 配置“身份验证失败处理程序”以转到“/error”而不是“/login”,但仅适用于/api/**
.
java - 使用https在java中休息api
当我Restservices
在 java 中使用等创建时GET
,POST
我要求他们使用
http protocol
. 一旦我使用 https,它就会出错。
例如: http://localhost:8080/demorest/webapi/aliens
工作正常。
但是当我使用相同的查询时https
我收到错误site can not provide secured connection
需要进行哪些修改才能使其与https
.
oauth - 使用 Oauth 2.0 保护 API
我正在创造新产品。为此,我必须使用可用的安全功能。我应该使用Oauth2
orJson web token
吗?哪个更好,在什么情况下应该使用这些?
oauth-2.0 - 这是否可以使用 cognito 的授权代码授权类型作为 api-gateway 中的授权人?
我想知道在保护 API 网关中是否有任何方法或可能性将授权代码授予类型实现为授权器?正如所搜索的,“授权码”授权类型最推荐用于保护 API。我在下面的文章中找到了解释使用 cognito 'client credentials' 作为授权类型来保护 api 网关的文章,
我尝试了类似的方法来创建 API 网关,我在其中完成了以下集成:
在 cognito 中创建用户池“UI Hosted”,授权类型为“授权码”
添加资源服务器
选择默认范围,因为我不想添加任何新范围
关联的回调 uri
现在我可以访问登录页面进行注册和登录,它会在回调 uri 中返回“授权码”
在 API 网关中
我创建了一个 API 并集成了一些模拟响应
在 api 网关中作为 Authorizer 附加上面的用户池并部署
现在,当我在不传递令牌的情况下调用 api 时,它返回“未授权”
所以我使用下面的方法从 cognito 中提取访问令牌
如何使用 python 以编程方式交换授权代码以从 cognito 获取访问令牌
并使用邮递员在 api 标头中传递了令牌,但我仍然收到“未经授权”的响应
所以想知道在 api 网关中需要做什么才能验证令牌或这种方法出了什么问题..?
感谢是否有人可以提供帮助?
谢谢