gpt4 book ai didi

azure - Next Auth Active Directory 使用用户信息覆盖配置文件

转载 作者:行者123 更新时间:2023-12-03 05:15:22 24 4
gpt4 key购买 nike

我正在使用 Next Auth 通过 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 token ,来自 AzureADProvider 的配置文件数据似乎仍在使用。我以为 userinfo 会覆盖它,但它似乎不会那样工作,除非我做错了。

最佳答案

我尝试在我的环境中重现相同的结果,并得到如下结果:

我创建了 Azure AD 应用程序并授予了 API 权限:

enter image description here

我使用如下参数生成了使用授权代码流的访问 token :

GET https://login.microsoftonline.com/TenantId/oauth2/v2.0/token

client_id:ClientID
client_secret:ClientSecret
scope:https://graph.microsoft.com/user.read
grant_type:authorization_code
redirect_uri:RedirectUri
code:code

enter image description here

当我运行与您相同的查询时,我没有获得如下所示的 userTypeaccount status 属性:

GET https://graph.microsoft.com/v1.0/me

enter image description here

Note that : By default only businessPhones, displayName, givenName, id, jobTitle, mail, mobilePhone, officeLocation, preferredLanguage, surname, userPrincipalName properties will be returned.

要获取其他用户属性,请使用 $select,如下所示:

GET https://graph.microsoft.com/v1.0/me?$select=accountEnabled,userType

enter image description here

修改代码如下:

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',
params: {
scope: 'https://graph.microsoft.com/user.read',
grant_type: 'authorization_code'
},
},
})
]

关于azure - Next Auth Active Directory 使用用户信息覆盖配置文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/75100741/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com