Как использовать модуль Python OpenID Connect с идентификатором IBM Cloud App ID?
Я подписался на IBM Cloud App ID для защиты доступа к своему облачному приложению. Существует пример, который показывает, что сервис может использоваться с Python. Однако я хочу использовать один из (стандартных) модулей OpenID Connect. Как я могу настроить, например, Flask-pyoidc для работы с App ID? Требуется пара параметров, и я не уверен, как они соотносятся с тем, что предоставляет App ID.
provider_config = {
'issuer': 'https://op.example.com',
'authorization_endpoint': 'https://op.example.com/authorize',
'token_endpoint': 'https://op.example.com/token',
'userinfo_endpoint': 'https://op.example.com/userinfo'
}
auth = OIDCAuthentication(provider_configuration_info=provider_config)
1 ответ
Вот как provider_config
можно настроить.
provider_config={
"issuer": "appid-oauth.ng.bluemix.net",
"authorization_endpoint": appIDInfo['oauthServerUrl']+"/authorization",
"token_endpoint": appIDInfo['oauthServerUrl']+"/token",
"userinfo_endpoint": appIDInfo['profilesUrl']+"/api/v1/attributes",
"jwks_uri": appIDInfo['oauthServerUrl']+"/publickeys"
}
appIDInfo
либо получается из среды Cloud Foundry в IBM Cloud, либо может быть настроен вручную со структурой, подобной следующей:
"AppID": {
"clientId": "your App ID client Id",
"managementUrl": "https://appid-management.ng.bluemix.net/management/v4/-----tenantID----",
"oauthServerUrl": "https://appid-oauth.ng.bluemix.net/oauth/v3/-----tenantID----",
"profilesUrl": "https://appid-profiles.ng.bluemix.net",
"secret": "the App ID secret",
"tenantId": "-----tenantID----",
"version": 3
}
clientId
а также secret
будет использоваться для заполнения client_info
объект, требуемый Flask-pyoidc. У меня есть пример кода с использованием Flask-pyoidc с идентификатором приложения в хранилище GitHub. Он показывает все шаги от конфигурации до использования декораторов для защиты маршрутов приложения во Flask.