2017-09-15 184 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屬性來滿足您的需求。