Klicken Sie auf ENDPUNKTE ANZEIGEN und kopieren Sie den Wert VERBUNDMETADATENDOKUMENT

office-365

#1

Hallo liebe Community,

ich versuche gerade die Office365 Integration umzusetzen. Leider scheitere ich am 3. Punkt (siehe Topic). Diesen scheint im neuen Azure Interface nicht mehr zu geben. Kann mir hier ggf jemand weiterhelfen?

Besten Dank und viele Grüße,
Meg


Using GApps & o365 sync without sso
#2

Hallo Meg,

wir haben die Screenshots und Texte für das neue Portal in der App für UCS 4.3 bereits aktualisiert und sind dabei dies auch für ein Update für UCS 4.2 zu tun. Es sollte bald ein Update geben.

Bis dahin: Scrollen Sie nach dem Upload des Manifests ganz nach links bis zum ersten Panel und dort finden Sie oben Endpunkte: top_bar_add_app_DE

Beste Grüße
Daniel Tröder


#3

Hallo Daniel,

das hat soweit halb geklappt.
Die Commands, die hier beschrieben werden, funktionieren alle. Allerdings werden neue Nutzer nicht bei erzeugt und es erscheint auch keine Email im entsprechenden Feld (noch kann diese nachgetragen werden).

Wo finde ich weitere infos?

Besten Dank und viele Grüße,
meg


#4

Hallo meg,

Mal schauen was im logfile steht.

Bitte logge dich mit zwei Terminals in den Server ein und führe auf dem ersten aus:

ucr set office365/debug/werror=yes
tail -f /var/log/univention/listener.log | grep 365

Im zweiten Terminal dann:

service univention-directory-listener restart

Noch 20 Sekunden warten, dann bitte die Logverfolgung mit Strg+C im ersten Terminals abbrechen und die Ausgabe hier posten.

Gruß
Daniel


#5
20.03.18 17:49:45.848  LISTENER    ( ERROR   ) : o365(W): office365-group.<module>:59  office 365 group listener deactivated
20.03.18 17:49:45.881  LISTENER    ( ERROR   ) : o365(I): office365-user.<module>:143  office 365 user listener active
20.03.18 17:49:45.881  LISTENER    ( ERROR   ) : o365(I): office365-user.<module>:164  listener observing attributes: ['displayName', 'employeeType', 'givenName', 'l', 'mail', 'mailAlternativeAddress', 'mailPrimaryAddress', 'mobile', 'postalCode', 'roomNumber', 'sn', 'st', 'street', 'telephoneNumber']
20.03.18 17:49:45.882  LISTENER    ( ERROR   ) : o365(I): office365-user.<module>:165  listener is also observing: ['krb5KDCFlags', 'krb5PasswordEnd', 'krb5ValidEnd', 'passwordexpiry', 'sambaAcctFlags', 'sambaKickoffTime', 'shadowExpire', 'shadowLastChange', 'shadowMax', 'univentionOffice365Enabled', 'userPassword', 'userexpiry']
20.03.18 17:49:45.882  LISTENER    ( ERROR   ) : o365(I): office365-user.<module>:166  attributes mapping UCS->AAD: {'telephoneNumber': 'telephoneNumber', 'employeeType': 'jobTitle', 'mailPrimaryAddress': 'otherMails', 'mobile': 'mobile', 'roomNumber': 'physicalDeliveryOfficeName', 'l': 'city', 'st': 'usageLocation', 'mailAlternativeAddress': 'otherMails', 'street': 'streetAddress', 'sn': 'surname', 'postalCode': 'postalCode', 'mail': 'otherMails', 'givenName': 'givenName', 'displayName': 'displayName'}
20.03.18 17:49:45.882  LISTENER    ( ERROR   ) : o365(I): office365-user.<module>:167  attributes to sync anonymized: []
20.03.18 17:49:45.882  LISTENER    ( ERROR   ) : o365(I): office365-user.<module>:168  attributes to never sync: []
20.03.18 17:49:45.882  LISTENER    ( ERROR   ) : o365(I): office365-user.<module>:169  attributes to statically set in AAD: {}
20.03.18 17:49:45.882  LISTENER    ( ERROR   ) : o365(I): office365-user.<module>:170  attributes to sync: ['displayName', 'employeeType', 'givenName', 'l', 'mail', 'mailAlternativeAddress', 'mailPrimaryAddress', 'mobile', 'postalCode', 'roomNumber', 'sn', 'st', 'street', 'telephoneNumber']
20.03.18 17:49:45.882  LISTENER    ( ERROR   ) : o365(I): office365-user.<module>:171  attributes to sync from multiple sources: {'otherMails': ['mailPrimaryAddress', 'mailAlternativeAddress', 'mail']}
20.03.18 17:49:45.882  LISTENER    ( ERROR   ) : o365(I): azure_auth.get_http_proxies:327  proxy settings: {}

:frowning:

Besten Dank,
meg


#6

Hallo,

bitte einmal einen User anlegen und das dabei entstehende Log, so wie oben, hier posten.

Danke
Daniel


#7
20.03.18 17:56:49.256  LISTENER    ( ERROR   ) : o365(D): office365-user.handler:239  office365-user.handler() command: 'm' dn: 'uid=p.xxx,cn=users,dc=xxx,dc=com'
20.03.18 17:56:49.261  LISTENER    ( ERROR   ) : o365(I): azure_auth.get_http_proxies:327  proxy settings: {}
20.03.18 17:56:49.261  LISTENER    ( ERROR   ) : o365(I): azure_handler.__init__:162  service_plan_names=['OFFICE_BUSINESS']
20.03.18 17:56:49.298  LISTENER    ( ERROR   ) : o365(D): office365-user.handler:257  old was enabled.
20.03.18 17:56:49.300  LISTENER    ( ERROR   ) : o365(D): office365-user.handler:263  new is enabled.
20.03.18 17:56:49.300  LISTENER    ( ERROR   ) : o365(D): office365-user.handler:317  old_enabled and new_enabled -> MODIFY (uid=p.xxx,cn=users,dc=xxx,dc=com)
20.03.18 17:56:49.300  LISTENER    ( ERROR   ) : o365(D): listener.modify_user:186  modifications=[]
20.03.18 17:56:49.300  LISTENER    ( ERROR   ) : o365(D): listener.modify_user:188  udm_attrs={}
20.03.18 17:56:49.301  LISTENER    ( ERROR   ) : o365(D): listener.modify_user:221  No modifications - nothing to do.
20.03.18 17:56:49.303  LISTENER    ( ERROR   ) : o365(D): azure_auth.get_access_token:341  Loading token from disk...
20.03.18 17:56:49.304  LISTENER    ( ERROR   ) : o365(D): azure_auth.get_access_token:348  Token valid until 2018-03-20T18:03:56.
20.03.18 17:56:49.304  LISTENER    ( ERROR   ) : o365(D): azure_handler.call_api:180  GET https://graph.windows.net/xxx/users?api-version=1.6&%24filter=immutableId+eq+%27ODljMmU3YjItYzBhMy0xMDM3LTk4YzAtNzExMTM0NjBiODk5%27 data: None
20.03.18 17:56:51.039  LISTENER    ( ERROR   ) : o365(I): azure_handler.call_api:212  status: 200 (OK) (GET https://graph.windows.net/xxx/users?api-version=1.6&%24filter=immutableId+eq+%27ODljMmU3YjItYzBhMy0xMDM3LTk4YzAtNzExMTM0NjBiODk5%27)
20.03.18 17:56:51.040  LISTENER    ( ERROR   ) : o365(E): listener.find_aad_user_by_entryUUID:550  Could not find user with entryUUID='xxx'.
UNIVENTION_DEBUG_BEGIN  : admin.handlers.base.__getitem__ key = UniventionOffice365Data
UNIVENTION_DEBUG_END    : admin.handlers.base.__getitem__ key = UniventionOffice365Data
20.03.18 17:56:51.049  LISTENER    ( ERROR   ) : o365(I): office365-user.handler:324  Modified user 'p.xxx'.

Hoffe das passt. Einige sensitive Daten wurden durch xxx ersetzt.

Besten Dank und viele Grüße,
meg

P.S. Hab heute mal auf 1.4 aktualisiert und werde morgen die Anbindung noch mal durchspielen …


#8

Hallo,

bitte einen neuen Benutzer mit der Office365-Vorlage anlegen.
Der Benutzer aus dem logfile ist ein existierender, bei dem das Anlegen nicht geklappt hatte.

Gruß
Daniel


#9
27.03.18 10:03:43.687  LISTENER    ( ERROR   ) : o365(D): office365-user.handler:284  office365-user.handler() command: 'a' dn: 'uid=xxx,cn=users,dc=xxx,dc=com'
27.03.18 10:03:43.690  LISTENER    ( ERROR   ) : o365(I): azure_auth.get_http_proxies:338  proxy settings: {}
27.03.18 10:03:43.690  LISTENER    ( ERROR   ) : o365(I): azure_handler.__init__:170  service_plan_names=['OFFICE_BUSINESS']
27.03.18 10:03:43.879  LISTENER    ( ERROR   ) : o365(D): office365-user.handler:309  new is enabled.
27.03.18 10:03:43.879  LISTENER    ( ERROR   ) : o365(D): office365-user.handler:312  new_enabled=True old_enabled=False
27.03.18 10:03:43.879  LISTENER    ( ERROR   ) : o365(I): office365-user.handler:318  new_enabled and not old_enabled -> NEW or REACTIVATED (uid=xxx,cn=users,dc=xxx,dc=com)
27.03.18 10:03:43.879  LISTENER    ( ERROR   ) : o365(D): listener.create_user:98  udm_attrs={'mail': 'xxx@xxx.com', 'givenName': 'Joyce', 'displayName': 'xxx', 'mailPrimaryAddress': 'xxx@xxx.com', 'sn': 'xxx'}
27.03.18 10:03:43.879  LISTENER    ( ERROR   ) : o365(I): azure_handler._create_object:286  Creating user with properties: {'passwordProfile': {'password': '******', 'forceChangePasswordNextLogin': False}, 'accountEnabled': True, 'surname': 'xxx', 'mailNickname': 'xxx', 'userPrincipalName': 'xxx@xxx.onmicrosoft.com', 'immutableId': 'MWNkOWViYjItYzVlMS0xMDM3LTk4ZjUtNzExMTM0NjBiODk5', 'otherMails': ['xxx@xxx.com'], 'displayName': 'xxx', 'givenName': 'Joyce', 'usageLocation': 'DE'}
27.03.18 10:03:43.879  LISTENER    ( ERROR   ) : o365(D): azure_auth.get_access_token:352  Loading token from disk...
27.03.18 10:03:43.879  LISTENER    ( ERROR   ) : o365(D): azure_auth.get_access_token:357  Token expired, retrieving now one from azure...
27.03.18 10:03:43.914  LISTENER    ( ERROR   ) : o365(D): azure_auth.retrieve_access_token:513  POST to URL='https://login.microsoftonline.com/xxx-account-id-xxx/oauth2/token' with data={'resource': 'https://graph.windows.net', 'client_assertion_type': 'urn:ietf:params:oauth:client-assertion-type:jwt-bearer', 'redirect_uri': u'https://ucs.xxx.com/univention/command/office365/authorize', 'client_assertion': ‚xxx-asertion-xxx‘‚, 'client_id': u’xxx-id—xxx’, 'scope': ['Directory.ReadWrite.All'], 'grant_type': 'client_credentials'}
27.03.18 10:03:44.355  LISTENER    ( ERROR   ) : o365(D): azure_auth.retrieve_access_token:522  response: {u'resource': u'https://graph.windows.net', u'access_token': u'xxx-access-token-xxx', u'expires_in': u'3599', u'ext_expires_in': u'0', u'token_type': u'Bearer', u'not_before': u'1522137515', u'expires_on': u'1522141415'}
27.03.18 10:03:44.357  LISTENER    ( ERROR   ) : o365(D): azure_auth.get_access_token:359  Token valid until 2018-03-27T11:03:35.
27.03.18 10:03:44.358  LISTENER    ( ERROR   ) : o365(D): azure_handler.call_api:188  GET https://graph.windows.net/xxx-account-id-xxx/users?api-version=1.6&%24filter=immutableId+eq+%27MWNkOWViYjItYzVlMS0xMDM3LTk4ZjUtNzExMTM0NjBiODk5%27 data: None
27.03.18 10:03:44.841  LISTENER    ( ERROR   ) : o365(I): azure_handler.call_api:220  status: 200 (OK) (GET https://graph.windows.net/xxx-account-id-xxx/users?api-version=1.6&%24filter=immutableId+eq+%27MWNkOWViYjItYzVlMS0xMDM3LTk4ZjUtNzExMTM0NjBiODk5%27)
27.03.18 10:03:44.843  LISTENER    ( ERROR   ) : o365(D): azure_auth.get_access_token:359  Token valid until 2018-03-27T11:03:35.
27.03.18 10:03:44.843  LISTENER    ( ERROR   ) : o365(D): azure_handler.call_api:188  POST https://graph.windows.net/xxx-account-id-xxx/users?api-version=1.6 data: {'passwordProfile': {'password': '******', 'forceChangePasswordNextLogin': False}, 'accountEnabled': True, 'surname': u'xxx', 'mailNickname': u'xxx', 'userPrincipalName': u'xxx@xxx.onmicrosoft.com', 'immutableId': u'MWNkOWViYjItYzVlMS0xMDM3LTk4ZjUtNzExMTM0NjBiODk5', 'otherMails': ['xxx@xxx.com'], 'displayName': u'xxx', 'givenName': u'Joyce', 'usageLocation': u'DE'}
27.03.18 10:03:46.312  LISTENER    ( ERROR   ) : o365(I): azure_handler.call_api:220  status: 201 (OK) (POST https://graph.windows.net/xxx-account-id-xxx/users?api-version=1.6)
27.03.18 10:03:46.314  LISTENER    ( ERROR   ) : o365(D): azure_auth.get_access_token:359  Token valid until 2018-03-27T11:03:35.
27.03.18 10:03:46.314  LISTENER    ( ERROR   ) : o365(D): azure_handler.call_api:188  GET https://graph.windows.net/xxx-account-id-xxx/users?api-version=1.6&%24filter=userPrincipalName+eq+%27xxx%40xxx.onmicrosoft.com%27 data: None
27.03.18 10:03:46.526  LISTENER    ( ERROR   ) : o365(I): azure_handler.call_api:220  status: 200 (OK) (GET https://graph.windows.net/xxx-account-id-xxx/users?api-version=1.6&%24filter=userPrincipalName+eq+%27xxx%40xxx.onmicrosoft.com%27)
27.03.18 10:03:46.527  LISTENER    ( ERROR   ) : o365(D): azure_auth.get_access_token:359  Token valid until 2018-03-27T11:03:35.
27.03.18 10:03:46.527  LISTENER    ( ERROR   ) : o365(D): azure_handler.call_api:188  GET https://graph.windows.net/xxx-account-id-xxx/subscribedSkus?api-version=1.6 data: None
27.03.18 10:03:46.797  LISTENER    ( ERROR   ) : o365(I): azure_handler.call_api:220  status: 200 (OK) (GET https://graph.windows.net/xxx-account-id-xxx/subscribedSkus?api-version=1.6)
UNIVENTION_DEBUG_BEGIN  : admin.handlers.base.__getitem__ key = UniventionOffice365Profile
UNIVENTION_DEBUG_END    : admin.handlers.base.__getitem__ key = UniventionOffice365Profile
27.03.18 10:03:46.820  LISTENER    ( ERROR   ) : o365(I): listener.assign_subscription:504  SubscriptionProfiles found for 'xxx': []
27.03.18 10:03:46.820  LISTENER    ( ERROR   ) : o365(W): listener.assign_subscription:506  No SubscriptionProfiles: using all available subscriptions.
27.03.18 10:03:46.820  LISTENER    ( ERROR   ) : o365(D): azure_handler._change_license:489  operation: 'add' user_id: u'xxx-user-id-xxx' sku_id: u'xxx-SKU-xxx' deactivate_plans=None
27.03.18 10:03:46.820  LISTENER    ( ERROR   ) : o365(D): azure_auth.get_access_token:359  Token valid until 2018-03-27T11:03:35.
27.03.18 10:03:46.820  LISTENER    ( ERROR   ) : o365(D): azure_handler.call_api:188  POST https://graph.windows.net/xxx-account-id-xxx/users/xxx-user-id-xxx/assignLicense?api-version=1.6 data: {'addLicenses': [{'skuId': u'xxx-SKU-xxx', 'disabledPlans': []}], 'removeLicenses': []}
27.03.18 10:03:47.099  LISTENER    ( ERROR   ) : o365(I): azure_handler.call_api:220  status: 400 (FAIL) Code: Request_BadRequest (POST https://graph.windows.net/xxx-account-id-xxx/users/xxx-user-id-xxx/assignLicense?api-version=1.6)
27.03.18 10:03:47.100  LISTENER    ( ERROR   ) : o365(E): azure_handler.__init__:144  Subscription with SKU xxx-SKU-xxx does not have any available licenses.
27.03.18 10:03:47.100  LISTENER    ( ERROR   ) : o365(W): listener.create_user:151  Could not add license for subscription u'xxx-user-id-xxx' to user u'xxx-SKU-xxx': Subscription with SKU xxx-SKU-xxx does not have any available licenses.
UNIVENTION_DEBUG_BEGIN  : admin.handlers.base.__getitem__ key = UniventionOffice365Data
UNIVENTION_DEBUG_END    : admin.handlers.base.__getitem__ key = UniventionOffice365Data
27.03.18 10:03:47.107  LISTENER    ( ERROR   ) : o365(I): office365-user.new_or_reactivate_user:252  User creation success. userPrincipalName: u'xxx@xxx.onmicrosoft.com' objectId: u'xxx-user-id-xxx' dn: uid=xxx,cn=users,dc=xxx,dc=com

Bitteschön :wink:

Vielen Dank und beste Grüße,
Meg

P.S. Macht es im späteren Workflow einen unterschied, ob der Nutzer bei der Erstellung Office “zugewiesen” wird oder nachträglich?

P.P.S. Nutzer wurde angelegt. D.h. alles ist korrekt? (wgn der ERRORs)


#10

Interessant. Nun funktioniert es auch mit in UCS vorhandenen Nutzern. Kam das durch das Update der Office-App auf 1.4?

P.S. ERROR verwirrt :wink:


#11

Hallo,

super, dass es jetzt klappt.

Das kann ich im Nachhinein nicht beantworten, ist aber möglich.

Ja… das ist ein Seiteneffekt vom Erhöhen des Loglevels. Das tatsächliche LogNivieau steht hinter o365 (I,nfo, D,ebug E,rror W,arn). Da nun alles funktioniert, kann das Debugging ja aus:

ucr set office365/debug/werror
service univention-directory-listener restart

Gruß
Daniel