RBAC KEYCLOAK-FASTAPI INSTALL
Fastapi后端中集成keycloak
注意request可以在各个function里被传入 like:
@post....
def a (request):
request.headers[]....
...
定义一个类
class KeycloakAuthenticationMiddleware(BaseHTTPMiddleware):
async def __call__(self, request: Request, call_next):
try:
token = request.headers['token']
except KeyError:
return Response(status_code=401, content="Token required")
这里很重要的是 keycloak返回的公钥里不带begin public key 和end public key,要手动加。
# Token received. Decode token
try:
KEYCLOAK_PUBLIC_KEY = keycloak_openid.public_key()
KEYCLOAK_PUBLIC_KEY = '-----BEGIN PUBLIC KEY-----\n' + KEYCLOAK_PUBLIC_KEY + '\n-----END PUBLIC KEY-----'
print("DEBUG: PUBKEY:" + KEYCLOAK_PUBLIC_KEY)
print("DEBUG: TOKE