これは私が現在rdeggesまで使用している方法ですので、flask-stormpath
にこの機能を組み込む必要があります。
stormpath python sdkの最新バージョンが必要で、funcツールからラップします。
from stormpath.api_auth import (PasswordGrantAuthenticator, RefreshGrantAuthenticator, JwtAuthenticator)
from functools import wraps
このようにアプリケーションを作成できます。
stormpathClient = Client(id=KEYS['STORMPATH_ID'], secret=KEYS['STORMPATH_SECRET'])
stormpathApp = stormpathClient.applications.search('your-application')[0]
このデコレータは、エンドポイントの保護に役立ちます。
def tokenRequired(func):
"""
Decorator to apply on all routes which require tokens.
"""
@wraps(func)
def wrappingFunc():
#check the auth header of the request for a bearer token.
authHeader = request.headers.get('Authentication')
#make sure that the string is a bearer type.
if len(authHeader)<8 or (not authHeader[:7] == 'Bearer ') or (
not authHeader):
return Response("401 Unauthorized",401)
authToken = authHeader[7:]
try:
authenticator = JwtAuthenticator(stormpathApp)
authResult = authenticator.authenticate(authToken)
request.vUser = authResult.account
except:
return Response("403 Forbidden",403)
return func()
return wrappingFunc
#Use this decorator like below.
@flaskApp.route('/secure-route',methods=['GET','POST'])
@tokenRequired
def secureEndpoint():
# return JSON based response
return Response("This is secure Mr." + request.vUser.given_name ,200)
誰かがトークンの発行と最新表示のエンドポイントも知りたいと思っているのかどうか、私に知らせてください。
現在サポートを提供していますか? (4年後) –
申し訳ありません私はちょうどそれが12日前だったと見ました... – WebQube
@rdegges、私は現在(以下の答えで)使用してコメントをしている一時的な方法を見てくださいできますか? – Vasif