Wir suchen Benutzer im Verzeichnis azure ad b2c abzufragen und ihre Login-E-Mails programmatisch für alle Arten von Benutzern zu extrahieren. Was wir zu verstehen:So identifizieren Sie verschiedene Arten von Benutzern in azure b2c
- Standard User
- Gastnutzer (B2B)
- Local User (B2C Benutzer, der mit E-Mail angemeldet)
- Social Benutzer (B2C Benutzer, der mit einem sozialen unterzeichnet Konto)
wenn der aPI-Aufruf mit dem azur ad graph Explorer ausgeführt wird:
https://graph.windows.net/myorganization/users?api-version=1.6
können wir alle diese Benutzer sehen. (Daten werden hygienisiert ein wenig)
Beispiel Standardbenutzer
{
"odata.type": "Microsoft.DirectoryServices.User",
"objectType": "User",
"objectId": "8b7c468b-fec4-4ff2-b448-64f99f3fa9ff",
"deletionTimestamp": null,
"accountEnabled": true,
"assignedLicenses": [],
"assignedPlans": [],
"city": null,
"companyName": null,
"country": null,
"creationType": null,
"department": null,
"dirSyncEnabled": null,
"displayName": "Global User",
"employeeId": null,
"facsimileTelephoneNumber": null,
"givenName": null,
"immutableId": null,
"isCompromised": null,
"jobTitle": null,
"lastDirSyncTime": null,
"mail": null,
"mailNickname": "global.user",
"mobile": null,
"onPremisesDistinguishedName": null,
"onPremisesSecurityIdentifier": null,
"otherMails": [],
"passwordPolicies": null,
"passwordProfile": null,
"physicalDeliveryOfficeName": null,
"postalCode": null,
"preferredLanguage": null,
"provisionedPlans": [],
"provisioningErrors": [],
"proxyAddresses": [],
"refreshTokensValidFromDateTime": "2017-10-31T17:20:29Z",
"showInAddressList": null,
"signInNames": [],
"sipProxyAddress": null,
"state": null,
"streetAddress": null,
"surname": null,
"telephoneNumber": null,
"usageLocation": null,
"userIdentities": [],
"userPrincipalName": "[email protected]",
"userType": "Member"
}
Beispiel Gastnutzer
{
"odata.type": "Microsoft.DirectoryServices.User",
"objectType": "User",
"objectId": "6458e1fc-c27b-40cb-b83d-2124f0999130",
"deletionTimestamp": null,
"accountEnabled": true,
"assignedLicenses": [],
"assignedPlans": [],
"city": null,
"companyName": null,
"country": null,
"creationType": null,
"department": null,
"dirSyncEnabled": null,
"displayName": "displayname",
"employeeId": null,
"facsimileTelephoneNumber": null,
"givenName": "givenname",
"immutableId": null,
"isCompromised": null,
"jobTitle": null,
"lastDirSyncTime": null,
"mail": null,
"mailNickname": "qa_theaccesshub.com#EXT#",
"mobile": null,
"onPremisesDistinguishedName": null,
"onPremisesSecurityIdentifier": null,
"otherMails": [
"[email protected]"
],
"passwordPolicies": null,
"passwordProfile": null,
"physicalDeliveryOfficeName": null,
"postalCode": null,
"preferredLanguage": null,
"provisionedPlans": [],
"provisioningErrors": [],
"proxyAddresses": [],
"refreshTokensValidFromDateTime": "2017-10-31T15:36:22Z",
"showInAddressList": null,
"signInNames": [],
"sipProxyAddress": null,
"state": null,
"streetAddress": null,
"surname": "surname",
"telephoneNumber": null,
"usageLocation": null,
"userIdentities": [],
"userPrincipalName": "qa_theaccesshub.com#EXT#@qa2clientb2ctheaccesshub.onmicrosoft.com",
"userType": "Member"
}
Beispiel Local User
{
"odata.type": "Microsoft.DirectoryServices.User",
"objectType": "User",
"objectId": "a941e75d-2c1b-4383-9d6c-783c1d008479",
"deletionTimestamp": null,
"accountEnabled": true,
"assignedLicenses": [],
"assignedPlans": [],
"city": null,
"companyName": null,
"country": null,
"creationType": "LocalAccount",
"department": null,
"dirSyncEnabled": null,
"displayName": "Display Name",
"employeeId": null,
"facsimileTelephoneNumber": null,
"givenName": "Glen",
"immutableId": null,
"isCompromised": null,
"jobTitle": null,
"lastDirSyncTime": null,
"mail": null,
"mailNickname": "98c4f2cf-a452-46a4-a33f-6fb451bc3f59",
"mobile": null,
"onPremisesDistinguishedName": null,
"onPremisesSecurityIdentifier": null,
"otherMails": [],
"passwordPolicies": "DisablePasswordExpiration",
"passwordProfile": null,
"physicalDeliveryOfficeName": null,
"postalCode": null,
"preferredLanguage": null,
"provisionedPlans": [],
"provisioningErrors": [],
"proxyAddresses": [],
"refreshTokensValidFromDateTime": "2017-11-03T18:18:36Z",
"showInAddressList": null,
"signInNames": [
{
"type": "emailAddress",
"value": "[email protected]"
}
],
"sipProxyAddress": null,
"state": null,
"streetAddress": null,
"surname": "Martin",
"telephoneNumber": null,
"usageLocation": null,
"userIdentities": [],
"userPrincipalName": "[email protected]microsoft.com",
"userType": "Member"
}
Beispiel Social Benutzer
{
"odata.type": "Microsoft.DirectoryServices.User",
"objectType": "User",
"objectId": "917bddd5-40d8-4a25-9a6e-8317a6949b48",
"deletionTimestamp": null,
"accountEnabled": false,
"assignedLicenses": [],
"assignedPlans": [],
"city": null,
"companyName": null,
"country": null,
"creationType": null,
"department": null,
"dirSyncEnabled": null,
"displayName": "Display Name",
"employeeId": null,
"facsimileTelephoneNumber": null,
"givenName": "GivenName",
"immutableId": null,
"isCompromised": null,
"jobTitle": null,
"lastDirSyncTime": null,
"mail": null,
"mailNickname": "unknown",
"mobile": null,
"onPremisesDistinguishedName": null,
"onPremisesSecurityIdentifier": null,
"otherMails": [
"[email protected]"
],
"passwordPolicies": null,
"passwordProfile": {
"password": null,
"forceChangePasswordNextLogin": true,
"enforceChangePasswordPolicy": false
},
"physicalDeliveryOfficeName": null,
"postalCode": null,
"preferredLanguage": null,
"provisionedPlans": [],
"provisioningErrors": [],
"proxyAddresses": [],
"refreshTokensValidFromDateTime": "2017-11-02T13:48:09Z",
"showInAddressList": null,
"signInNames": [],
"sipProxyAddress": null,
"state": null,
"streetAddress": null,
"surname": "Surname",
"telephoneNumber": null,
"usageLocation": null,
"userIdentities": [],
"userPrincipalName": "[email protected]ub.onmicrosoft.com",
"userType": "Member"
}
Zusammenfassend stellen wir fest:
Standard User
- das userprincipal sieht normal
- die Login E-Mail finden Sie unter: userprincipal
- Erstellungsart ist: nu ll
Gastnutzer
- die userprincipal die externe Verzeichnisse upn von '# EXT #', gefolgt von dieser primären Domain
- die Login E-Mail an, gefolgt zu sein, schaut zu finden ist: otherMails [0]
- Erstelltyp ist: null
Lokale Benutzer
- das userprincipal sieht einige Objekt-ID von diesem primären Domain
- die Anmeldung E-Mail gefolgt sein, finden Sie unter: signInNames [0].Wert
- Erstelltyp ist: Localaccount
Social Benutzer
- das userprincipal 'cpim_', gefolgt von einer Objekt-ID von dieser primären Domain
- die Anmeldung E-Mail gefolgt sein aussieht, kann gefunden werden bei: otherMails [0]
- Erstellungsart ist: null
Obwohl wir einige Trends sehen können, würden wir lieber keine Vermutungen oder schlechten Annahmen machen. Also haben wir die folgenden Fragen:
1) Was ist der beste Weg zu wissen, welche der vier Arten von Benutzern, die wir betrachten?
2) Gibt es einen einfacheren Weg, um den Login zu bekommen (idealerweise als ein Feld, wir versuchen, dies in ein einfaches Mapping zu bauen)? Andere als:
If signInNames[0].value is not null use signInNames[0].value
Elseif otherMails[0] is not null use otherMails[0]
Else userPrincipalName
3) Verhalten sich andere soziale Benutzer anders? (Wir haben Facebook bisher nur gemacht.)
4) Für Social User was ist der beste Weg zu wissen, welcher Identity Provider verwendet wird?
UPDATE 08.11:
5) Warum Benutzer nicht bekommen Localaccount ein otherMail Wert?
6) Warum erhalten Nicht-LocalAccount-Benutzer keine Anmeldenamen? Ich denke, das wurde exklusiv für B2C hinzugefügt?
7) Auch ich denke, Endbenutzer haben nicht wirklich die Fähigkeit, soziale und lokale Konten heute zu verbinden? (es sei denn, Sie verwenden eine App, die das Diagramm nutzt).
UPDATE 08.11 # 2:
8) Ist es sicher (bis jetzt) davon ausgehen, dass ich ein B2C unterzeichnet-up einzelnen disambiguate können, die nur mit einem sozialen Konto anhand der folgenden Kriterien anmelden können :
- Erstelltyp ist: null - das heißt, sie sind kein Local User
- userprincipal mit ‚cpim_‘ durch eine UUID gefolgt vorangestellt ist - das heißt, sie sind wahrscheinlich nicht ein Standard oder Gastbenutzer
Oder würde es eine bessere Methode geben?
Vielen Dank! Das war leider die Antwort, die ich erwartet hatte. Kurz gesagt, ich kann die Anmelde-E-Mails für soziale Accounts derzeit nicht richtig erfassen. Ich sollte auch nicht davon ausgehen, dass es eine primäre E-Mail-Adresse gibt. Neugierige beiseite Fragen dann: 1) Warum erhalten LocalAccount Benutzer nicht einen anderen Mailwert? 2) und warum erhalten Nicht-LocalAccount-Benutzer keine Anmeldenamen? Ich denke, das wurde exklusiv für B2C hinzugefügt? 3) Auch ich denke, Endbenutzer haben nicht wirklich die Fähigkeit, soziale und lokale Konten heute zu verbinden? (es sei denn, Sie verwenden eine App, die das Diagramm nutzt). Nochmals vielen Dank – fei0x
Ich bin Ihre zusätzlichen Fragen zum ursprünglichen Posting hinzufügen, und aktualisieren Sie dann meine Antwort zu reagieren. So können zukünftige Benutzer das einfacher sehen. –
Danke nochmal, das war sehr hilfreich. Ich denke, um mein Endergebnis anzusprechen, habe ich eine letzte Frage hinzugefügt. Danke – fei0x