RestletにBasic認証を構成してみた
やっぱりRestletサーバーは守りたいので認証を実装するのは常道。そこでBasic認証を実験してみた。
まずRestletサーバー側の実装。認証保護の入れ物を作って、そこに保護するアプリケーションを投げ込む感じのようだ。
String userid1="user1";
String passwd1="pass";
// Basic認証で保護する入れ物をつくる。名前はPATHPilot-realm。
ChallengeAuthenticator guard1 = new ChallengeAuthenticator(null, ChallengeScheme.HTTP_BASIC, "PATHPilot-realm");
// IDとシークレットのVerifierをつくる。
MapVerifier mapVerifier1 = new MapVerifier();
// useridとpasswordペアを登録する。
mapVerifier1.getLocalSecrets().put(userid1, passwd1.toCharArray());
guard1.setVerifier(mapVerifier1);
Restlet restout1 = new DataOutput1().dataout;
// 入れ物にrestout1をいれる。入れられるものはRestletクラスのもの。
guard1.setNext( restout1 );
Component component = new Component();
component.getServers().add(Protocol.HTTP, 8010);
// URIが/nextの場合にguard1に飛ぶ
component.getDefaultHost().attach("/next",guard1);
認証保護の入れ物に投げ込んだアプリケーションは以下のとおり。
public class DataOutput1 extends Application {
Restlet dataout = new Restlet(){
@Override
public void handle ( Request requet, Response response){
response.setEntity(new StringRepresentation("hello, my friend from Next", MediaType.TEXT_PLAIN));
}
};
}
WEBブラウザー(Firefox)からアクセスしてみる。
http://192.168.1.62:8010/next
すると以下のポップアップが現れた。認証保護入れ物の名前のPATHPilot-realmも表示されている。
当然のことながら、user1/passと入力すると認証がパスして以下が表示される。違う組み合わせだと認証エラー。予定通りだ。
次にRaspberry PiのPythonのコード実装に移る。
こちらは至って簡単で以下のコードを書くだけ。
import reqeusts
from requests.auth import HTTPBasicAuth
response=requests.post("http://192.168.1.62:8010/next", auth=HTTPBasicAuth("user1","pass"))
reponseとして以下が返ってくる。
hello, my friend from Next
これで私のRaspberry PiとしかRestletサーバーは会話しないように出来る。めでたし、めでたし。
« RestletでのAnnotationの続き | トップページ | VNCサーバーとの付き合い方 »
「ラズパイ日記」カテゴリの記事
- NEO-7M GPSモジュールが中国から届いた(2023.01.15)
- TNCアプリにおけるDemoduatorの動作確認(2023.01.09)
- AFSKでの復調について(2023.01.04)
- APRSでのNRZIについて備忘録(2023.01.02)
- pico_tnc 2200Hz(Space)でPhaseをずらす件の備忘録(2022.12.31)
コメント