を使用すると、単純なガイドをスクリプト
コングとAutos 0は非常に強力なプラットフォームです.
もちろん、ツールで行うことができますより多くのドキュメントを読む必要があり、時にはイライラする可能性があります😬
だから、私はどのように簡単にローカル環境ですべてを設定することができますし、好きなように周りを再生表示するには、このガイドを作成しました.
この記事を短くするために、私はすでにあなたがDocker、コングとAutos 0について少し知っていると仮定しました.いずれにせよ、いくつかのリンクがあります. Use the Docker command line Kong JWT Plugin Obtaining an Access Token example また、次の3つのガイドが必要です. テストのために使用できるAPI; アクセストークンを生成することができます Pythonスクリプトを実行するには 私はどのように構成プロセスを自動化できるかの例としてPythonスクリプトを使用します.これは、実行中のシステムや別の環境のために設定する必要がある人々のための大きな助けかもしれません.
Dockerコンテナで走っている香港から始めましょう.
私たちは香港のためのDockerネットワークとデータベースを作成する必要があります.
ところで、Pythonを使うことは必須ではありません.あなたがそれを好きでないならば、あなたはまだ他のどんな言語ででもそれらのステップに従うことができるか、カール命令を使うことができます.
最初に新しいサービスとルートの設定オブジェクトを定義します.
ローカルAPIを使用しない場合は、変更することができます
次のステップ-サービスを作成し、香港のルート.
まず最初に、このスクリプトをあなたがあなたのConfigオブジェクトを持っている同じファイルにコピーし、そこで何が起こっているかを詳しく見てください.まだ実行しないでください-我々はまだ1つ以上のことを確認する必要があります.
私は、私の地元のサービスを代理にしようとしています.私が香港を通して私のローカルAPIを呼んでいたとき、それはメッセージで502エラーを返し続けました
理由は、香港が指摘されたからです
もちろん、テスト用の外部APIを使用している場合は気にする必要はありません.
簡単な解決策は、あなたのローカルホストマシンのIPアドレス(例えば192.168.1.98)であなたのサービスを登録することです.ところで、それはあなたのマシンで異なります.おそらく、あなたはそれをチェックしたいかもしれません.ラン
そのようにsmthを見ることができます.
更新を忘れないでください
では、スクリプトを実行することができます.IDE出力でエラーが表示されない場合は、サービスやルートの一覧を受け取ることができます.
今、あなたが十分に幸運であるならば、あなたは直接あなたのAPIにアクセスすることができなければなりません、あるいは、香港を通して.
注意: APIは稼働しているはずです.
直接要求
香港経由
私はすでに私のAuth 0アカウントの公開鍵を持っていましたが、あなたがそれを持っていないならば、以下のコマンドを実行して、あなたのpythonスクリプトで同じディレクトリに公開キーでファイルを保存してください.
注意:これらの値を置き換えることを忘れないでください
あなたのrouteIDを保存するのを忘れたならば、あなたはそれからそれを要求することができます
現在、あなたはあなたのAPIをMonerトークンなしで香港を通して呼ぶことができません.また、Author 0で署名されたトークンのみが動作します.
あなたは同じ呼び出しをしようとすることができます
ヘッダー
ベアラートークンが添付されている場合は、リクエストを受け付けます.
あなたのトークンのスコープまたはクレームを確認し、あなたが香港Enterprise Versionを使用している必要がある場合は、JWT署名プラグインを見てみたいかもしれません.このプラグインは、あなたのためにトークンを確認し、再表示します. たとえば、複数のAPIにアクセスすることを想定しているSPAアプリケーションがあれば、auht 0ドキュメントからこのトピックをチェックすることができますRepresent Multiple APIs Using a Single Logical API . あなたが香港を持っていて、すべてのAPIがそれで保護されて、信頼されるならば、あなたはM 2 Mトークンを生成する必要はありません.もちろん、あなたがそれを必要とするか、それが価値があるとわかるならば、確かに、それのために行きます.それはちょうどあなたが考えている何かである、それは本当にあなたのシステムをより安全にするか、それは不要な費用をもたらすでしょうか?
このガイドが役に立つことを願っています.お読みありがとうございます.私に連絡することを躊躇しないでください、質問をするか、あなたが誤りを見つけたならば、私に知らせてください🤗
もちろん、ツールで行うことができますより多くのドキュメントを読む必要があり、時にはイライラする可能性があります😬
だから、私はどのように簡単にローカル環境ですべてを設定することができますし、好きなように周りを再生表示するには、このガイドを作成しました.
この記事を短くするために、私はすでにあなたがDocker、コングとAutos 0について少し知っていると仮定しました.いずれにせよ、いくつかのリンクがあります.
最初にまず!
Dockerコンテナで走っている香港から始めましょう.
私たちは香港のためのDockerネットワークとデータベースを作成する必要があります.
docker network create kong-net
docker run -d --name kong-database \
--network=kong-net \
-p 5432:5432 \
-e "POSTGRES_USER=kong" \
-e "POSTGRES_DB=kong" \
-e "POSTGRES_PASSWORD=kong" \
postgres:9.6
データベース移行docker run --rm \
--network=kong-net \
-e "KONG_DATABASE=postgres" \
-e "KONG_PG_HOST=kong-database" \
-e "KONG_PG_USER=kong" \
-e "KONG_PG_PASSWORD=kong" \
-e "KONG_CASSANDRA_CONTACT_POINTS=kong-database" \
kong:latest kong migrations bootstrap
さて、コンテナを動かすことができます.docker run -d --name kong \
--network=kong-net \
-e "KONG_DATABASE=postgres" \
-e "KONG_PG_HOST=kong-database" \
-e "KONG_PG_USER=kong" \
-e "KONG_PG_PASSWORD=kong" \
-e "KONG_CASSANDRA_CONTACT_POINTS=kong-database" \
-e "KONG_PROXY_ACCESS_LOG=/dev/stdout" \
-e "KONG_ADMIN_ACCESS_LOG=/dev/stdout" \
-e "KONG_PROXY_ERROR_LOG=/dev/stderr" \
-e "KONG_ADMIN_ERROR_LOG=/dev/stderr" \
-e "KONG_ADMIN_LISTEN=0.0.0.0:8001, 0.0.0.0:8444 ssl" \
-p 8000:8000 \
-p 8443:8443 \
-p 127.0.0.1:8001:8001 \
-p 127.0.0.1:8444:8444 \
kong:latest
テストを行います.curl -i http://localhost:8001/
トラブルが起きたら、コンテナが動いているか確認してください.docker ps
あなたが見ないならばkong
and kong-database
リスト内のコンテナでは、明示的に起動する必要があります.docker start kong kong-database
テスト用のPostmanを使うこともできます.いくつかのスクリプトのための時間!
ところで、Pythonを使うことは必須ではありません.あなたがそれを好きでないならば、あなたはまだ他のどんな言語ででもそれらのステップに従うことができるか、カール命令を使うことができます.
最初に新しいサービスとルートの設定オブジェクトを定義します.
# you'll need those imports later
import requests
import json
host = "192.168.1.98"
config = {
"service": {
"name": "test-service",
"url": "http://" + host + ":7400/api/test/data",
},
"route": {
"protocols": ["http"],
"methods": ["GET", "POST", "PUT", "DELETE"],
"hosts": [host],
"paths": ["/(data)/*"],
"headers": None,
},
}
ヒアservice.url
我々が電話をするならば、コングが我々をリダイレクトする場所ですlocalhost:8000/data
ヘッダでHost 192.168.1.98
(理論的に)🙃).ローカルAPIを使用しない場合は、変更することができます
service.url
and route.hosts
あなたの値を使用する.さもなければ、あなたは質問をするかもしれません.その考えを持ちなさい、私はそれに戻ります.次のステップ-サービスを作成し、香港のルート.
まず最初に、このスクリプトをあなたがあなたのConfigオブジェクトを持っている同じファイルにコピーし、そこで何が起こっているかを詳しく見てください.まだ実行しないでください-我々はまだ1つ以上のことを確認する必要があります.
# create a service using our config object
print(config["service"]["name"])
serviceUrl = "http://localhost:8001/services"
serviceResponse = requests.post(url=serviceUrl, json=config["service"])
# print service id to ensure that it was successfully created
serviceId = (json.loads(serviceResponse.content))["id"]
print("serviceId ", serviceId)
# create a route using our config object
routeUrl = "http://localhost:8001/routes"
config["route"]["service"] = {
"id": serviceId
}
routeResponse = requests.post(url=routeUrl, json=config["route"])
routeId = (json.loads(routeResponse.content))["id"]
# print route id because you'll need it to add a plugin later
print("routeId", routeId)
そして今、なぜ私たちは' 192.168.1.98 'を使用します.私は、私の地元のサービスを代理にしようとしています.私が香港を通して私のローカルAPIを呼んでいたとき、それはメッセージで502エラーを返し続けました
An invalid response was received from the upstream server
.理由は、香港が指摘されたからです
localhost
私のDockerコンテナの.明らかに、私のサービスがそこで主催されなかったので、それは働きませんでした.もちろん、テスト用の外部APIを使用している場合は気にする必要はありません.
簡単な解決策は、あなたのローカルホストマシンのIPアドレス(例えば192.168.1.98)であなたのサービスを登録することです.ところで、それはあなたのマシンで異なります.おそらく、あなたはそれをチェックしたいかもしれません.ラン
/sbin/ifconfig
Mac用またはipconfig
Windowsマシン用.そのようにsmthを見ることができます.
更新を忘れないでください
host
Pythonでは、IPを使って設定してください.では、スクリプトを実行することができます.IDE出力でエラーが表示されない場合は、サービスやルートの一覧を受け取ることができます.
今、あなたが十分に幸運であるならば、あなたは直接あなたのAPIにアクセスすることができなければなりません、あるいは、香港を通して.
注意: APIは稼働しているはずです.
直接要求
香港経由
ラストステップ.それを安全にしましょう!
私はすでに私のAuth 0アカウントの公開鍵を持っていましたが、あなたがそれを持っていないならば、以下のコマンドを実行して、あなたのpythonスクリプトで同じディレクトリに公開キーでファイルを保存してください.
注意:これらの値を置き換えることを忘れないでください
{COMPANYNAME}.{REGION-ID}
Autos 0アカウントのX 509証明書をダウンロードする必要があります.$ curl -o {COMPANYNAME}.pem https://{COMPANYNAME}.{REGION-ID}.auth0.com/pem
そして、公開鍵をX 509証明書から取り出します.$ openssl x509 -pubkey -noout -in {COMPANYNAME}.pem > pubkey.pem
すごい!今、我々はJWTのプラグインと消費者を追加する必要がありますあなたのrouteIDを保存するのを忘れたならば、あなたはそれからそれを要求することができます
http://localhost:8001/routes
( 1つ以上の場合はルートを見つけてください.# create a plugin for our route
# here you'll need to insert your routeId
pluginUrl = "http://localhost:8001/routes/" + {ROUTEID} + "/plugins"
pluginData = {
"name": "jwt"
}
requests.post(url=pluginUrl, json=pluginData)
注意:スクリプトを同じフォルダに置くのを忘れた場合、スクリプトは動作しません.# create a global consumer
consumerUrl = "http://localhost:8001/consumers"
consumerData = {
"username": "test-consumer",
"custom_id": "test-consumer-id",
}
consumerResponse = requests.post(url=consumerUrl, json=consumerData)
# print consumer id to ensure that it was successfully created
consumerId = (json.loads(consumerResponse.content))["id"]
print("consumerId ", consumerId)
# Add JWT plugin with Auth0 public key
basicUrl = consumerUrl + "/" + consumerId + "/jwt"
basicData = {
"algorithm": "RS256",
"key": "https://{COMPANYNAME}.{REGION-ID}.auth0.com/",
"rsa_public_key": open('pubkey.pem', 'rb')
}
requests.post(url=basicUrl, files=basicData)
迂回路🥳
現在、あなたはあなたのAPIをMonerトークンなしで香港を通して呼ぶことができません.また、Author 0で署名されたトークンのみが動作します.
あなたは同じ呼び出しをしようとすることができます
localhost:8000/data
そして、あなたがすべてを正しくしたならば、あなたは無許可401を受けるべきです.ヘッダー
Host 192.168.1.98
あなたが香港を呼んでいるとき、要求に付けられるべきです.ベアラートークンが添付されている場合は、リクエストを受け付けます.
あと少し
ありがとう!
このガイドが役に立つことを願っています.お読みありがとうございます.私に連絡することを躊躇しないでください、質問をするか、あなたが誤りを見つけたならば、私に知らせてください🤗
Reference
この問題について(を使用すると、単純なガイドをスクリプト), 我々は、より多くの情報をここで見つけました https://dev.to/borzenko_lena/auth0-with-kong-jwt-plugin-in-docker-simple-guide-with-python-scripts-49leテキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol