在不使用特定于认知的boto API的情况下获取身份验证令牌

问题描述

我当前正在使用AWS Cognito进行用户身份验证。不过,我有计划让AuthN IdP不可知。例如,我希望稍后能够用其他身份提供者替换Cognito。

目前,我使用boto3Cogito API获取如下所示的idToken。我如何编写一个非特定于Cogito的实现来获取idTokens,这样当提供者更改时,我就不会依赖于Cogito了?我想使用一些通用的python OAuth API为用户获取idToken。我如何才能做到这一点?

    cognito_client = boto3.client('cognito-idp')
    response_tokens = cognito_client.initiate_auth(
        AuthFlow='USER_PASSWORD_AUTH',
        AuthParameters={
            'USERNAME': uname,
            'PASSWORD': pwd
        },
        ClientId=OAUTH_AUDIENCE
    )

解决方案

要从Cognito获取ID Token,需要调用特定的接口。如果您想稍后切换到其他IdP,则需要使用该IdP提供的其他API。因此,API是特定于IdP的。

因此,由于此时您希望从Cognito获得Token,因此需要使用AWS API。

也就是说,如果不同的IdP&您的意思是说&使用Cognito&配置不同的IdP,那么我想补充一下,OAuth 2.0流不能使用CLI或SDK来实现。(=原因是,OAuth 2.0流是基于浏览器的流,要使用不同的IDP登录,您需要使用浏览器。

相关文章