spo*_*ida 8 azure-ad-b2c microsoft-graph-sdks microsoft-graph-api
我正在尝试更新identitiesAzure AD B2C 租户中现有用户的集合。federated具体来说,我正在尝试为用户添加另一个身份条目。
根据Microsoft Graph 文档,这应该是可能的,前提是我:
User.ManageIdentities.All向我用来进行图形调用的客户端分配权限userPrincipalName也在请求中发送)我已在 B2C 租户中注册了一个应用程序,并为其分配了访问 Microsoft Graph 的特定权限。我正在使用客户端凭据流程来获取具有声明中适当权限的访问令牌roles。我可以成功获取访问令牌,并通过检查颁发的 JWT 确认是否存在所需的权限。
我还使用Microsoft.Graph SDK从 C# 代码调用图 v1.0 端点。我正在尝试更新一个现有用户,该用户具有众所周知的 userId (objectId)。使用访问令牌,GraphServiceClient我可以成功检索用户。例如,下面的代码可以正常工作
var user = await client.Users[userId].Request()
.Select(o => new { o.Id, o.DisplayName, o.Identities })
.GetAsync();
Run Code Online (Sandbox Code Playgroud)
检索用户后,我尝试向该用户的属性添加另一个条目identities,并为该用户发出更新图调用。请注意,SDK 要求更新调用仅使用本地创建的对象,即您无法发送之前通过 SDK 获取的现有对象。
我的完整更新代码如下
async Task TryUpdateUser(GraphServiceClient client, string userId)
{
var user = await client.Users[userId].Request()
.Select(o => new { o.Id, o.DisplayName, o.Identities })
.GetAsync();
// Need to re-create the existing identities since Graph client rejects existing items in requests
var identities = user.Identities.Select(o => new ObjectIdentity
{
SignInType = o.SignInType,
Issuer = o.Issuer,
IssuerAssignedId = o.IssuerAssignedId
}).ToList();
identities.Add(new ObjectIdentity
{
SignInType = "federated",
Issuer = "TestIssuer",
IssuerAssignedId = "testingId"
});
var updatedUser = new User
{
Identities = identities
};
await client.Users[userId].Request().UpdateAsync(updatedUser);
}
Run Code Online (Sandbox Code Playgroud)
但是,当UpdateAsync调用时,会抛出响应类型为 的异常BadRequest。错误消息指出:
消息:如果用户仅具有社交/联合身份或未设置身份,则不允许添加非联合用户 signInType。请使用非联合身份以及现有身份(如果有)重新创建用户。
我显然正在尝试创建联合用户signInType,因此引用非联合用户signInType 的错误消息文本让我感到困惑。
我究竟做错了什么?
| 归档时间: |
|
| 查看次数: |
4481 次 |
| 最近记录: |