我们正在使用ADAL.Net在Azure AD中创建用户。使用public class LoggerManager<TCategoryName> : ILoggerManager<TCategoryName>
{
private readonly ILogger<TCategoryName> _logger;
public LoggerManager(ILogger<TCategoryName> logger)
{
this._logger = logger;
}
public void LogError(string message, LoggerErrorType type)
{
var errorLogger = NLog.LogManager.GetLogger(loggerName);
errorLogger.Error(message);
}
}
class A
{
....DI
public void Test()
{
_loggerManager.LogError("test message")
}
}
UT:
public void TestUT()
{
var loggerMock = new Mock ILoggerManager A>>();
var service = ServiceFactory.Create<A>(loggerMock);
service.Test();
//how to Verify logerror message?
}
,我们可以提供任何电子邮件地址(gmail或非域电子邮件)作为用户名来创建Azure AD Local帐户。
当我们使用Microsoft Graph(MSAL.Net)尝试相同操作时,我们无法创建用户:
SinginNames
我们如何使用Microsoft Graph或Microsoft Graph Client Library创建gmail地址作为用户名?
新创建的帐户应该是本地用户帐户,而不是访客用户。
Code: Request_BadRequest
Message: Property userPrincipalName is invalid.
答案 0 :(得分:0)
否您不能。您必须通过以下示例向tenant specific email
请求:
请求网址: https://graph.microsoft.com/v1.0/users
{
"accountEnabled": true,
"displayName": "KironTestDisplayName",
"mailNickname": "KironTestNickName",
"userPrincipalName": "KironTestingCreateUserWithMember@MyTenant.onmicrosoft.com",
"userType":"guest",
"passwordProfile" : {
"forceChangePasswordNextSignIn": true,
"password": "Test@pass420"
}
}
要记住的要点:
userPrincipalName
应该遵循
UserName@tenant-value.onmicrosoft.com
“ userType”:“访客”或“成员”您可以添加
注意:邮件应类似于
myUser@Mytenant.onmicrosoft.com
,否则您将遇到类似Property userPrincipalName is invalid
的400请求错误
您的案例:
如果您想使用gmail account
创建用户,则需要更改请求模式。您必须像下面这样请求invitation API:
请求网址: https://graph.microsoft.com/v1.0/invitations
请求正文:
{
"invitedUserEmailAddress": "TestGmailUser@gmailUser",
"inviteRedirectUrl": "https://myapp.com"
}
回复:
注意::如果转到
azure portal
,您将无法将gmail user
添加为邀请后添加为来宾用户的域成员。所以这 为什么需要以上请求模式。希望你现在明白了。
Gmail用户添加SDK:
GraphServiceClient graphClient = new GraphServiceClient( authProvider );
var invitation = new Invitation
{
InvitedUserEmailAddress = "TestGmailUser@gmailUser",
InviteRedirectUrl = "https://myapp.com"
};
await graphClient.Invitations
.Request()
.AddAsync(invitation);
Azure Portal验证:
我已使用上述请求在门户网站上成功添加了gmail user
。请参见以下屏幕截图:
答案 1 :(得分:0)
对于那些仍在努力实现这一目标的人来说,这里接受的答案没有帮助,或者至少在 2021 年不是这种情况。我能够使用个人电子邮件地址以及自定义登录名创建本地 B2C 帐户使用 Example 2: Create a user with social and local account identities。
POST https://graph.microsoft.com/v1.0/users
Content-type: application/json
{
"displayName": "John Smith",
"identities": [
{
"signInType": "userName",
"issuer": "contoso.onmicrosoft.com",
"issuerAssignedId": "johnsmith"
},
{
"signInType": "emailAddress",
"issuer": "contoso.onmicrosoft.com",
"issuerAssignedId": "jsmith@yahoo.com"
},
{
"signInType": "federated",
"issuer": "facebook.com",
"issuerAssignedId": "5eecb0cd"
}
],
"passwordProfile" : {
"password": "password-value",
"forceChangePasswordNextSignIn": false
},
"passwordPolicies": "DisablePasswordExpiration"
}