我正在使用下一个身份验证通过Azure Active Directory进行身份验证。我可以成功执行此操作,但配置文件对象不包含我需要的某些信息。
我正在尝试获取“用户类型”和“帐户状态”属性。
这是我的密码
providers: [
AzureADProvider({
clientId: process.env.AZURE_AD_CLIENT_ID,
clientSecret: process.env.AZURE_AD_CLIENT_SECRET,
tenantId: process.env.AZURE_AD_TENANT_ID,
userinfo: {
url: 'https://graph.microsoft.com/v1.0/me/',
params: {
scope: 'https://graph.microsoft.com/user.read',
grant_type: 'authorization_code'
},
},
})
]
我不知道在这之后该怎么办,甚至不知道这是否是我应该做的。任何帮助都是感激的。
更新:以下是我修改后的建议
providers: [
AzureADProvider({
clientId: process.env.AZURE_AD_CLIENT_ID,
clientSecret: process.env.AZURE_AD_CLIENT_SECRET,
tenantId: process.env.AZURE_AD_TENANT_ID,
userinfo: {
url: 'https://graph.microsoft.com/v1.0/me?$select=accountEnabled,userType,displayName,givenName,objectId,email,surname',
params: {
scope: 'https://graph.microsoft.com/user.read',
grant_type: 'authorization_code',
},
},
profile(profile) {
return {
id: profile.objectId,
name: profile.displayName,
lastName: profile.surname,
firstName: profile.givenName,
email: profile.email,
userType: profile.userType,
accountStatus: profile.accountEnabled
};
}
})]
由于id令牌的原因,AzureADProvider中的配置文件数据似乎仍在使用。我以为userinfo会覆盖它,但它似乎不会那样工作,除非我做错了。
1条答案
按热度按时间yh2wf1be1#
我尝试在我的环境中重现相同的结果,结果如下:
我创建了Azure AD应用程序并授予了API权限:
我使用授权代码流生成了访问令牌,使用的参数如下:
当我运行与您相同的查询时,我无法获得
userType
和account status
属性,如下所示:要获取其他用户属性,请使用**
$select
**,如下所示: