【问题标题】:authentication for restapi which shared by multiple webapps由多个 webapps 共享的 restapi 的身份验证
【发布时间】:2020-06-26 16:02:20
【问题描述】:

我有 3 个战争:a.warb.warrestful.war,它们在同一个 tomcat 中。

restful.war是一个spring boot,spring mvc项目,它为a.warb.war提供了restful call。

a.warb.war 是独立的webapp,他们都有自己的登录系统,他们的用户存储在不同的数据库表中,例如a.war的用户存储在tableAb.war的用户存储在tableB

对于a.warb.war,有两个地方可以调用restful.war

  1. a.warb.war通过org.apache.http.impl.client.DefaultHttpClient.execute()中的java代码调用restful.war的代码
  2. 通过ajax从a.war,b.war的html/jsp页面调用restful.war

我想要的是:只有登录a.warb.war的用户才能调用restful.war,我该怎么做?

【问题讨论】:

    标签: java spring spring-boot rest restful-authentication


    【解决方案1】:

    在“restful”应用程序中实现基本身份验证,并使用正确的“授权”标头从“a”和“b”调用其端点。 所以这将解决如果 'restful' 收到来自 'a' 或 'b' 的调用的问题,它会响应,否则会抛出 403 禁止错误。

    【讨论】:

    • 感谢您的回答。您的意思是使用用户名和密码进行基本身份验证吗?如果是,那么 1. 如果我没有 https 怎么办? 2. 使用 https 进行基本认证时,它的安全性如何?
    • 和 3. 因为a.warb.war使用不同的用户表,所以如果使用带有用户名和密码的基本认证,那么restful.war需要知道请求来自a或@ 987654325@,这样就可以查看对应的用户表了吧?
    • 第 1 点和第 2 点不是问题,您可以在 http/https 中进行基本身份验证。
    • 我的意思是在restful.war中创建单独的auth机制。然后使用“a”和“b”中的用户/密码(此用户与您在“a”和“b”中使用的用户不同。它在“restful”中单独维护)进行身份验证。
    • 您应该在“restful”应用程序中拥有一些身份验证(基本或基于令牌)机制。只有“a”和“b”应用程序会使用正确的凭据进行调用。来自其他地方的任何没有凭据的呼叫都将被拒绝。
    猜你喜欢
    • 2020-06-08
    • 1970-01-01
    • 1970-01-01
    • 2013-08-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-04-11
    • 2020-07-08
    相关资源
    最近更新 更多