cancel
Showing results for 
Search instead for 
Did you mean: 

Python API SSO NoneType Error

De_Grossi_Hugo
Confirmed Champ
Confirmed Champ

Bonjour,

Mon environnement : Nuxeo 10.10 Windows 10 Python 3.9

J'essaye actuellement de créer un POC pour la connexion SSO avant de la mettre en place sur la branche dev, je rencontre toutefois quelques problèmes. J'utilise l'API Python de Nuxeo.

**Mon code : **

    auth1 = PortalSSOAuth("Administrator", "nuxeo5secretkey", "MD5")
    auth2 = ("Administrator", "Administrator")
    nuxeo = Nuxeo(auth=auth1)

    print(nuxeo.directories.get('/'))

Erreur : AttributeError: 'NoneType' object has no attribute 'update'

Ce que j'ai remarqué : En regardant dans le code source je remarque cette méthode :

def getattr(object, name, default=None): # known special case of getattr
    """
    getattr(object, name[, default]) -> value
    
    Get a named attribute from an object; getattr(x, 'y') is equivalent to x.y.
    When a default argument is given, it is returned when the attribute doesn't
    exist; without it, an exception is raised in that case.
    """
    pass

qui ne renvoie rien, c'est de là que vien le NoneType. Cette méthode est utilisée dans :

def get_digest_hash(algorithm):
    # type: (Text) -> Optional[HASH]

    # Retrieve the hashlib function for the given digest, None if not found
    print(algorithm)
    print(hashlib)
    func = getattr(hashlib, algorithm, None)
    print(func)
    return func() if func else None

elle même utilisée dans

def make_portal_sso_token(timestamp, random, secret, username, digest_algorithm="md5"):
    # type: (int, Text, Text, Text, Optional[Text]) -> Text
    """Generate a token for SSO with Portals."""
    clear_token = ":".join([str(timestamp), random, secret, username])
    digester = get_digest_hash(digest_algorithm)
    print(digester)
    digester.update(get_bytes(clear_token))
    hashed_token = digester.digest()
    return get_text(b64encode(hashed_token))

NB : Les print viennent de moi

Question Le problème vient-il d'une mauvaise configuration de ma part ou vraiment de la méthode citée ci-dessus ?

1 ACCEPTED ANSWER

Mickaël_Schoent
Star Contributor
Star Contributor

Bonjour Hugo,

Vous avez raison dans votre analyse, joli travail 🙂

Le problème vient du fait que vous avez mis l'algorithme en majuscules. Un cas auquel nous n'avons pas pensé et qui sera corrigé dans une prochaine release. En attendant, je vous conseille d'uiliser ce code, en utilisant au maximum les valeurs par défaut :

auth1 = PortalSSOAuth("Administrator", "nuxeo5secretkey")
nuxeo = Nuxeo(host=host, auth=auth1)

Le dernier argument a été mis en place pour le rare cas où Portal SSO serait configuré côté serveur pour utliser un algorithme différent de MD5.

View answer in original post

5 REPLIES 5

Mickaël_Schoent
Star Contributor
Star Contributor

Bonjour Hugo,

Vous avez raison dans votre analyse, joli travail 🙂

Le problème vient du fait que vous avez mis l'algorithme en majuscules. Un cas auquel nous n'avons pas pensé et qui sera corrigé dans une prochaine release. En attendant, je vous conseille d'uiliser ce code, en utilisant au maximum les valeurs par défaut :

auth1 = PortalSSOAuth("Administrator", "nuxeo5secretkey")
nuxeo = Nuxeo(host=host, auth=auth1)

Le dernier argument a été mis en place pour le rare cas où Portal SSO serait configuré côté serveur pour utliser un algorithme différent de MD5.

D'accord ! merci de la réponse rapide !

JE n'arrive toujours pas à trouver de solution à cette 401, j'ai fait et refait la configuration comme indiqué sur la page

La page https

Super tout marche parfaitement ! j'avais oublié la bonne url ^^

Getting started

Find what you came for

We want to make your experience in Hyland Connect as valuable as possible, so we put together some helpful links.