Как использовать модуль Python OpenID Connect с IBM Cloud App ID?

Я зарегистрировался в IBM Cloud App ID для защиты доступа к мое облачное приложение. Вот пример, показывающий, что сервис можно использовать с Python. Однако я хочу использовать один из (стандартных) модулей OpenID Connect. Как я могу настроить, например, Flask-pyoidc для работы с идентификатором приложения? Для этого требуется пара параметров, и я не уверен, как они соотносятся с тем, что предоставляет 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)

person data_henrik    schedule 05.05.2018    source источник


Ответы (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.

person data_henrik    schedule 05.05.2018
comment
Отлично. Есть ли планы запечатлеть, как это будет работать с торнадо? - person Chris Snow; 05.05.2018
comment
Я пока не использовал Tornado, но мог бы поискать другие уроки. - person data_henrik; 05.05.2018
comment
Не стоит беспокоиться. Я сам посмотрю, когда у меня будет возможность. Мне очень понравился tornado, в отличие от flask, он довольно самоуверенный, что очень помогает, если вы не используете его все время. здесь, и я создал облачную фабрику tornado hello world, здесь - person Chris Snow; 05.05.2018