2017-09-15 52 views
0

我试图在Azure AD中创建一个用户,但没有mail提交的是用户创建成功。我需要在用户创建时在Azure AD中添加电子邮件ID。Azure AD:属性'邮件'是只读的,不能设置

我加入JSON的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); 

获取电子邮件后,从智威汤逊

public LogOnResponse LogOn(IEnumerable<System.Security.Claims.Claim> claims, string returnUrl) 
{ 
    var email = claims.FirstOrDefault(s => s.Type == "email").Value; 

在这个地方,我可以” t获取访问令牌,因为用户创建的时间未设置为emai l在图形API请求中。我还有一个问题,就是这个电子邮件ID只基于我验证了另一个网站,所以我需要在用户创建时设置电子邮件。

我需要在我的应用程序登录电子邮件ID。我将Azure AD集成到了电子邮件所需的现有应用程序中。

有谁知道如何在Azure AD中为用户设置电子邮件ID。

我在邮递员的要求。对电子邮件回复添加在请求

+0

你看过[Azure AD B2C](https://docs.microsoft.com/azure/active-directory-b2c/active-directory-b2c-overview)吗?似乎您正在管理外部用户,并在您的应用程序中使用各种不同的电子邮件,这更适合于Azure AD B2C。 – Saca

回答

0

有电子邮件地址的两个不同的领域开展了AAD用户。

Graph API Reference

邮件

POST, GET ($filter) 

的SMTP地址的用户,例如, “[email protected]”。

otherMails

POST, GET ($filter), PATCH 

的用户额外的电子邮件地址的列表;例如:[“[email protected]”,“[email protected]”]。

请注意,您只能设置mail属性在最初创建用户(POST),但只要你想(补丁),你可以更新otherMails属性。

看来你应该使用otherMails属性来满足您的需求。