0

Play フレームワークの Scala バージョンを使用して API を構築しています。一部のエンドポイントには機密データが含まれますが、これを正確に保護する方法がわかりません。

セキュア ソーシャル ( http://securesocial.ws/guide/configuration.html ) は、私が調べてきたライブラリですが、Web サイトや OAuth プロバイダーでのログインを対象としているようです。

この場合、OAuth プロバイダーになる必要があるようです。または、Twitter などのプロバイダーでユーザーがログインできるようにすることは可能ですか? しかし、それはどのように機能しますか?OAuth に関するドキュメントは非常にひどいようです。

4

1 に答える 1

0

トークンを管理する組み込みの方法はありません。アクセストークンの使用を分散および管理するトークンシステムを構築することをお勧めします。ユーザーごとに 1 つ持つことも、別のシステムを使用することもできます。

次に、エンドポイントごとに、API を保護するためのラップされたアクションを作成します。

case class SecuredAPIRequest(request:Request[AnyContent]) extends 

WrappedRequest(request)

trait SecuredController{
  import play.api.mvc.Results._

  //This takes an action for a request, and checks to see if the apiKey equals or API_KEY
  def SecuredAPIAction(f:SecuredAPIRequest => Result) = Action{
    request =>
      request.body.asJson.map{ jsValue =>
        (jsValue \ "apiKey").asOpt[String] match{
          case Some(key) if validKey(key) => f(SecuredAPIRequest(request)) //We are clear to go, execute our function. 
            // NOTE: validKey would be a function that checks the key against our DB ensuring that it is valid.
          case None => Forbidden

        }

      }.getOrElse(Forbidden)
  }
}

SecureSocial が行うことは、セキュリティ リクエストを認証サービス (Twitter、Facebook など) にルーティングし、それらのトークンをセキュリティとして使用することです。認証のためにユーザーをリダイレクトすることは不可能であるため、これは API としては機能しません。

于 2013-11-05T19:45:59.703 に答える