我们有一个应用程序,以
domain\username
格式存储用户登录名。我们通过 Windows 进行身份验证,然后通过将从用户处获得的 domain\username
与我们的数据库进行匹配,从我们的数据库中获取其他信息。
现在他们想迁移到云端。我们通过 Azure AD 中的应用程序对用户进行身份验证。然而,我们返回的
user
标识符是 [email protected]
。
我摆弄了
https://graph.microsoft.com/v1.0/users/email
和选择命令来尝试获取“旧”名称。然而,呃我还没找到如何获得它。
他们迁移到云端的原因是他们正在合并两个AD。因此,一些用户将是 DomainA,一些用户是 DomainB,但位于同一租户中。所以我的第一个想法是尝试将邮件转换为其他格式。然而,两个不同的AD有不同的命名标准。一个有
DOMAINA\fila
(名字的两个第一个字母和姓氏的两个第一个字母),另一个有 DOMAINB\firlas
。而且尝试以这种方式解决它感觉真的很难看。
是否可以通过 Microsoft Graph 获取格式为
domain\username
的用户登录名?
使用 Graph 的
beta
版本,您可以从 onPremisesDomainName
和 onPremisesSamAccountName
属性获取用户的域和用户名:
/beta/users?$select=userPrincipalName,onPremisesDomainName,onPremisesSamAccountName
该域名存储为 FQDN,因此您需要进行一些翻译。例如,
domainName.ad.contoso.com
可能会翻译为 domainName\
)。
这将为您提供一种解决方法,以便您可以将用户与内部数据库进行匹配。然而这只是一个临时解决方案。从长远来看,您真的想要迁移到使用
userPrincipalName
。这是主要用户标识符,并保证在给定租户内是唯一的。
Azure AD 与旧版 Active Directory 略有不同。传统 AD 中的某些概念,例如组织单位 (OU)、组策略对象 (GPO)、Kerberos 身份验证、轻量级目录访问协议 (LDAP)、多个域之间的域信任以及其他几个概念在云中根本不存在。
示例请求如何从 Microsoft graph api 获取操作系统用户名 在此处输入图像描述