Ich habe eine Anwendung mit UCWA und das Kennwort Token entwickelt. Ich lese alle Nachrichten, die zu dem mit der Anwendung authentifizierten Benutzer kommen, unter Verwendung von Ereignissen, aber das Token dauert nicht lange und die Erneuerung verwendet den Browser, was hinsichtlich der Automatisierung schrecklich ist.Aktualisieren UCWA-Token automatisch auf Skype für Business Online
Gibt es eine Möglichkeit, ein Token zu erhalten, das nicht über den Browser erneuert werden muss, damit ich meine Anwendung vollständig automatisieren kann? Ich habe die gesamte Dokumentation zu Github und auf der Website von ucwa gelesen.
Dies ist die Anfrage, die ich tun, um ein Token zu erhalten.
Holen Sie sich das signin url
def get_signin_url (redirect_uri, client_id, Mieter, Ressource): XFrame, user_discovery_uri, resource = do_autodiscover (config [ 'domain'])
# Build the query parameters for the signin url
params = {
'client_id': client_id,
'redirect_uri': redirect_uri,
'response_type': 'token',
'response_mode': 'form_post',
'resource': resource
}
# The authorize URL that initiates the OAuth2 client credential flow for admin consent
authorize_url = '{0}{1}'.format(authority, '/%s/oauth2/authorize?{0}' % tenant)
# Format the sign-in url for redirection
signin_url = authorize_url.format(urlencode(params))
return signin_url
Nach mehreren Schritten , erhalten Sie das Token:
def get_token_from_code(client_id, tenant, auth_code, redirect_uri, resource, client_secret):
# Build the post form for the token request
post_data = {
'grant_type': 'authorization_code',
'code': auth_code,
'redirect_uri': redirect_uri,
'resource': resource,
'client_id': client_id,
'client_secret': client_secret
}
# The token issuing endpoint
token_url = '{0}{1}'.format(authority, '/{0}/oauth2/token'.format(tenant))
# Perform the post to get access token
response = requests.post(token_url, data=post_data)
try:
# try to parse the returned JSON for an access token
access_token = response.json()['id_token']
return access_token
except:
raise Exception('Error retrieving token: {0} - {1}'.format(
response.status_code, response.text))
Vielen Dank!
Es sieht aus wie Sie Python verwenden. Gibt es einen Grund, warum Sie nicht die [ADAL-Bibliothek für Python] (https://github.com/AzureAD/azure-activedirectory-library-for-python) verwenden, um das Token ohne Verwendung eines Browsers zu erhalten? – ShelbyZ
Vielen Dank für Ihre Antwort! Aber mein Hauptproblem ist nicht mit dem Active Directory-Token, sondern mit dem UCWA-Server, der anders ist. Obwohl ich versuchen werde, meine Lösung mit ADAL und die Antwort von Andrey Markeev zu verbessern. : +1: –