2017-09-15 4 views
0

J'essayais de créer un utilisateur dans Azure AD sans mail classé est un utilisateur créé avec succès. Je dois ajouter l'identifiant de messagerie dans Azure AD au moment de la création de l'utilisateur.Azure AD: La propriété 'mail' est en lecture seule et ne peut pas être définie

j'ai ajouté la propriété mail en JSON et il dit

« mail » propriété est en lecture seule et ne peut être réglé.

Mon code C# est:

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; 

Get jeton d'accès d'Azure AD après connexion

JwtSecurityToken token = GetAccessToken(authDetails, code, returnUrl); 
var claims = token.Claims; 
return LogOn(claims, returnUrl); 

Obtenir Email de JWT

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

Dans cet endroit que je peux » t obtenir le jeton d'accès, parce que l'utilisateur a créé le temps n'est pas défini le emai l dans la requête d'API graphique. J'ai un autre problème est cet ID d'email basé seulement je validais un autre site également, ainsi j'étais exigé placer l'email dans le temps créé par utilisateur.

J'ai besoin d'un identifiant d'email pour me connecter à mon application. J'ai été intégrer l'Azure AD dans l'application existante, il est nécessaire pour l'email.

Est-ce que quelqu'un sait comment définir l'ID de messagerie dans Azure AD pour un utilisateur?

Ma Demande dans Facteur. Réponse de courrier électronique ajoutée dans la demande

+0

Avez-vous regardé [Azure AD B2C] (https://docs.microsoft.com/azure/active-directory-b2c/active-directory-b2c-overview)? On dirait que vous gérez des utilisateurs externes avec toutes sortes d'e-mails différents dans votre application, ce qui convient mieux à Azure AD B2C. – Saca

Répondre

0

Il y a deux champs différents pour les adresses e-mail sur un utilisateur DAA.

De l'Graph API Reference:

courrier

POST, GET ($filter) 

L'adresse SMTP pour l'utilisateur, par exemple, "[email protected]".

otherMails

POST, GET ($filter), PATCH 

Une liste d'adresses e-mail pour l'utilisateur; par exemple: ["[email protected]", "[email protected]"].

Notez que vous ne pouvez définir la propriété mail lorsque vous créez d'abord l'utilisateur (POST), mais vous pouvez mettre à jour la propriété otherMails chaque fois que vous voulez (PATCH).

Il semble que vous devriez utiliser la propriété otherMails pour vos besoins.