加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

scala – 使用基本身份验证和SSL的Play Framework REST

发布时间:2020-12-16 09:02:29 所属栏目:安全 来源:网络整理
导读:我是这个认证领域的新手.我搜索了很多,但无法找到一种方法来验证对Play服务器进行的REST调用.各种方式和最佳实践有哪些? 解决方法 一种非常简单的方法是使用Action Composition.有关示例,请查看Guillaume Bort提供的这个Gist: https://gist.github.com/gui
我是这个认证领域的新手.我搜索了很多,但无法找到一种方法来验证对Play服务器进行的REST调用.各种方式和最佳实践有哪些?

解决方法

一种非常简单的方法是使用Action Composition.有关示例,请查看Guillaume Bort提供的这个Gist: https://gist.github.com/guillaumebort/2328236.如果要在异步操作中使用它,可以编写如下内容:

def BasicSecured[A](username: String,password: String)(action: Action[A]): Action[A] = Action.async(action.parser) { request =>
  request.headers.get("Authorization").flatMap { authorization =>
    authorization.split(" ").drop(1).headOption.filter { encoded =>
      new String(org.apache.commons.codec.binary.Base64.decodeBase64(encoded.getBytes)).split(":").toList match {
        case u :: p :: Nil if u == username && password == p => true
        case _ => false
      }
    }
  }.map(_ => action(request)).getOrElse {
    Future.successful(Unauthorized.withHeaders("WWW-Authenticate" -> """Basic realm="Secured Area""""))
  }
}

SSL与基本身份验证无关.您可以直接或通过前端HTTP服务器(如ngnix)将HTTPS用于API.有关此主题的Play文档中有相当不错的详细信息.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读