限制从另一个应用程序ruby访问api

时间:2017-12-10 07:04:02

标签: ruby api http ip microservices

我有一个用Ruby构建的Grape API应用程序。 还有其他一些用Python,Java等构建的微服务。 我必须限制其中一些微服务访问此葡萄应用程序中的特定API。

现在,这是使用IP白名单实现的。但每当其他微服务的IP发生变化时,葡萄应用的代码也必须改变,这是不稳定的。

有没有更好的解决方案呢?请帮忙。

1 个答案:

答案 0 :(得分:0)

Grape has built-in Basic and Digest authentication(给定的block在当前端点的上下文中执行)。身份验证适用于当前命名空间和任何子节点,但不适用于父节点。

# Basic authentication example
http_basic do |username, password|
  # verify user's password here
  { 'test' => 'password1' }[username] == password
end

# Digest authentication example:
http_digest({ realm: 'Test Api', opaque: 'app secret' }) do |username|
  # lookup the user's password here
  { 'user1' => 'password1' }[username]
end

有关这两者之间差异的更多信息,请available in other answers on StackOverflow

通过使用其他宝石,Grape可以实现更高级的身份验证实现,例如OAUTH2