1

最初に、私は REST サービスとクライアント API に関して初心者だと言わせてください...

NetBeans で、Jersey と Glassfish 3.1.2 を使用していくつかの REST Web サービスを開発しています。これらの REST サービスは既に存在し、すべて MySQL データベースから自動的に生成されました。

私の次のステップはセキュリティです!私はすでに REST サービスにBasic-Authenticationを実装しており、すべて機能しています (REST サービスのメインページに入ると、Web にログイン/パスワードを含むウィンドウが表示されます)。ログインとパスワードはデータベースにあります。

ここで、クライアント APIが REST サービスを使用しようとするときのセキュリティを実装したいと考えています。それを行うための簡単で最良の方法は何ですか?

ありがとう!

4

1 に答える 1

0

REST サービスのエントリ ポイントは、パブリックにアクセスできる場合、セキュリティが実装されている場所である必要があります。ユーザーがログイン画面を経由してサービスにアクセスすることになっているという事実に頼ることはできません。

つまり、サービスのエントリ ポイントは、要求が正当であることを確認するために十分な検証を実行する必要があります。これは、リクエストに関係なく、クライアントの資格情報をサービスに直接送信することで実現できます。

たとえば、私が見たいくつかの REST サービスでは、次のようになります。

@POST
@Consumes("application/xml")
@Produces("application/xml")
public String theService(@FormParam("someData") String someData, @FormParam("clientProfile") String clientProfile) {
    //parse XML into ClientProfile
    //attempt to authenticate ClientProfile
    //if authentication is unsuccessful, return error message
    //else, perform service's function
}

もちろん、このモデルをそのまま採用して、ユーザー名やパスワードなどを平文の XML でネットワーク経由で送信しないでください。そのためには、少なくともデータを暗号化する必要があります。いずれにせよ、この例の目的は、サービスが最初にヒットした場所で処理を続行する必要があることを示すことです。

経験則: URL でヒットできる場合は、セキュリティ機能が必要です。

于 2013-03-11T13:31:48.627 に答える