图RBAC凭据返回错误

问题描述 投票:0回答:3

我正在尝试使用Azure Active Directory libraries for Python创建一个新用户,使用UserPassCredentials类对用户进行身份验证会引发位置参数错误。 UserPassCredentials类。所有参数都是定义的:

 credentials = UserPassCredentials(username, password, client_id, secret, resource)

这是错误:

TypeError: __init__() takes from 3 to 5 positional arguments but 6 were given

正好有5个论点。为什么我一直收到这个错误?

我了解Azure AD Graph API将弃用某些功能,建议使用Microsoft Graph API。我只是需要帮助理解为什么它会返回此错误。

azure-ad-graph-api azure-sdk-python
3个回答
0
投票

首先,在SDK的早期版本中,ADAL尚不可用,我们提供了UserPassCredentials类。这被认为已弃用,不应再使用。这不支持2FA。但是根据我之前对这个类的经验,我们要么在创建凭证对象时传递下面的组合

1)用户名,密码,2)用户名,密码,资源3)客户端ID,秘密4)客户端ID,秘密和资源

资源是默认的('https://management.core.windows.net/'。)

这样的事情:

return UserPassCredentials(

        config_data["username"],

        config_data["password"],

    ) 

UserPassCredentials(username, password, client_id=None, secret=None, **kwargs)

last param是可以具有以下值的选项

可选的kwargs可能包括:

cloud_environment(msrestazure.azure_cloud.Cloud):一个有针对性的云环境

china(bool):为基于中国的服务配置auth,默认为'False'。

租户(str):替代租户,默认为“普通”。

resource(str):备用身份验证资源,默认为'https://management.core.windows.net/'。

verify(bool):验证安全连接,默认为'True'。

timeout(int):请求超时(以秒为单位)。

proxies(dict):字典映射协议或协议和主机名到代理的URL。

cache(adal.TokenCache):adal.TokenCache,请参阅ADAL配置

我假设,你正在传递正确的值,也请尝试通过我上面提到的组合,看看它是否有效。

希望能帮助到你。


0
投票

首先,回答你的Python问题:

TypeError: __init__() takes from 3 to 5 positional arguments but 6 were given

看看documentation of this class,签名是:

UserPassCredentials(username, password, client_id=None, secret=None, **kwargs)

使用位置语法,您需要至少2个,最多4个(+ self总是计为一个),因此消息是“从3到5”。当您在示例中传递“resource”时,您传递的是第6个位置参数,该参数不符合Python签名(同样,自我计数为1!)。这与Azure或SDK无关,这是纯Python :)

现在,为了解决您的特定问题,GraphRBAC API要求资源参数始终为https://graph.windows.net。你不能改变它。所以最小的结构将是:

credentials = UserPassCredentials(
        '[email protected]',      # Your user
        'my_password',          # Your password
        resource="https://graph.windows.net"
)

这个文档可能会有所帮助:https://docs.microsoft.com/python/api/overview/azure/activedirectory

这通常足以创建客户端。如果您有更多问题,请不要犹豫,在Github上打开一个问题:https://github.com/Azure/azure-sdk-for-python/issues

(我在Azure SDK for Python团队中的MS工作,并实际拥有此代码:))


0
投票

我决定使用MS Graph API。使用请求和adal库让我有用

© www.soinside.com 2019 - 2024. All rights reserved.