2017-08-09 18 views
15

Pomyślnie zaimplementowałem MSAL JS dla Azure AD B2C. Następnym krokiem jest umożliwienie użytkownikowi edycji swojego profilu. Stworzyłem nową politykę dla profilu edycji. Ale jak przekierować użytkownika? Istnieją tylko metody logowania/metody pozyskiwania tokena. Próbowałem ustawić uprawnienia do innej polityki. Następnie przekierowuje na właściwą stronę, ale potem zaczyna narzekać na błędy w zakresach i lokalnie gromadzi token.Azure MSAL JS: Jak edytować profil?

editProfile() { 
    this.userAgentApp.authority = this.policyEditProfile; 
    this.userAgentApp.loginRedirect(); 
} 

przykłady kodu ASP.NET jawnie mieć możliwość ustalenia zasad editProfile ID: https://docs.microsoft.com/en-gb/azure/active-directory-b2c/active-directory-b2c-devquickstarts-web-dotnet-susi#update-code-to-use-your-tenant-and-policies

Temp tak brakującej MSAL.JS i muszę ręcznie spreparować URL, czy to prawda ?

Odpowiedz

6

Tak, to prawda. trzeba będzie użyć innego organu, który URL składa się z najemcą i nazwy polityki, jak pokazano here:

private static string Tenant = "yourTenant.onmicrosoft.com"; 
public static string PolicySignUpSignIn = "b2c_1_susi"; 
public static string PolicyEditProfile = "b2c_1_edit_profile"; 
private static string BaseAuthority = "https://login.microsoftonline.com/tfp/{tenant}/{policy}/oauth2/v2.0/authorize"; 
public static string Authority = BaseAuthority.Replace("{tenant}", Tenant).Replace("{policy}", PolicySignUpSignIn); 
public static string AuthorityEditProfile = BaseAuthority.Replace("{tenant}", Tenant).Replace("{policy}", PolicyEditProfile); 

BTW, to taka próbka, chociaż dla .NET pulpitu pokazuje, jak korzystać z profilu edycji i resetowania hasła polityk: active-directory-b2c-dotnet-desktop patrz w szczególności metodę EditProfileButton_Click współczynnik pozyskania tokenu (interaktywnie) spowoduje wywołanie okna dialogowego do edycji profilu:

AuthenticationResult authResult = await App.PublicClientApp.AcquireTokenAsync(App.ApiScopes, GetUserByPolicy(App.PublicClientApp.Users, App.PolicyEditProfile), UIBehavior.SelectAccount, string.Empty, null, App.AuthorityEditProfile); 
+0

Dzięki za to! Próbowałem go w MSAL.JS, ale otrzymałem ten wyjątek? this.userAgentApp.acquireTokenPopup (authSettings.scopes, this.policyEditProfile) .then ((accessToken) => { this.setAuthenticated (accessToken); } (błąd) => { console.error (błąd); }) AADB2C90055: Zakres "profil otwarty" podany w żądaniu musi określać zasób, taki jak "https://example.com/calendar.read". Korelacja ID: 8a022666-3400-4d7d-A847-f8dc4dc49452 Datownik: 13.08.2017 23: 42: 10Z . Invalid_request – Boland

+0

Używam tych samych zakresów jak podczas logowania Dlaczego muszę inny zakresy do edycji profilu? – Boland