我尝试在Azure AD中创建用户而没有mail
已成功创建用户。我需要在创建用户时在Azure AD中添加电子邮件ID。
我在json中添加了mail
属性,它说
属性'mail'是只读的,无法设置。
我的C#代码是:
var url = string.Format("https://graph.windows.net/{0}/users?api-version=1.6",oauthsettings.TenantId);
var authDetails = _orchardServices.WorkContext.CurrentSite.As<AzureAuthenticationPart>();
var alogin = new AzureLogin();
var jwttoken = alogin.ServiceAuth(authDetails.ClientId, authDetails.ClientSecret);
var aadUser =new {
mail=email,
accountEnabled = true,
displayName = userName,
mailNickname = userName,
passwordProfile = new passwordProfile()
{
password = password,
forceChangePasswordNextLogin = authDetails.IsUpdatePwdNextLogin
},
userPrincipalName = userName + oauthsettings.DirectoryName,
};
var client = new HttpClient();
client.DefaultRequestHeaders.Add("Authorization", "Bearer " + jwttoken);
var modelval = Convert.ToString(JsonConvert.SerializeObject(aadUser));
var content = new StringContent(modelval, Encoding.UTF8, "application/json");
var result = client.PostAsync(url, content).Result;
登录后从Azure AD获取访问令牌
JwtSecurityToken token = GetAccessToken(authDetails, code, returnUrl);
var claims = token.Claims;
return LogOn(claims, returnUrl);
从JWT获取电子邮件
public LogOnResponse LogOn(IEnumerable<System.Security.Claims.Claim> claims, string returnUrl)
{
var email = claims.FirstOrDefault(s => s.Type == "email").Value;
在这个地方我无法获取访问令牌,因为用户创建的时间未在Graph API请求中设置电子邮件。我有另一个问题是这个电子邮件ID只是我也验证了另一个网站,所以我需要在用户创建的时间设置电子邮件。
我需要在我的应用程序中登录的电子邮件ID。我将Azure AD集成到电子邮件所需的现有应用程序中。
是否有人知道如何在Azure AD中为用户设置电子邮件ID。
我在邮差中的要求。对请求中添加的电子邮件的回复
答案 0 :(得分:1)
AAD用户的电子邮件地址有两个不同的字段。
邮件强>
POST, GET ($filter)
用户的SMTP地址,例如&#34; jeff@contoso.onmicrosoft.com"。
<强> otherMails 强>
POST, GET ($filter), PATCH
用户的其他电子邮件地址列表;例如:[&#34; bob@contoso.com" ;,&#34; Robert@fabrikam.com"]。
请注意,您最初只能在创建用户(POST)时设置mail
属性,但您可以随时更新otherMails
属性(PATCH)。
您似乎应该根据自己的需要使用otherMails
属性。
答案 1 :(得分:1)
由于mail属性绑定到Exchange Online,因此除非您拥有Exchange Online许可证,否则我们不允许您写入该属性。当您为用户激活许可证时,Exchange Online将在创建用户邮箱的过程中使用正确的邮箱邮件地址更新该字段。您可以在创建用户期间使用“ MailNickName”和“其他电子邮件”。此字段还将取决于它是“本地帐户(B2C)”还是“工作或学校帐户”。
我希望这能回答您有关“邮件”属性为“只读”的问题