Dwa Azure ogłoszenia Spółka, Klienci
Spółka publikuje aplikację ASP.NET5 nazwie Portal, aplikacja jest ustawiony tak, aby być multi-tenant.
Klienci mieć 2 Użytkownik: użytkownikowi (który jest tylko użytkownikiem) i administratora (który jest światowym Administrator w katalogu).
Portal, jest wstępnie skonfigurowany do zapytać o pozwolenie 1 Zastosowanie: Czytaj katalogu danych
-
Nadchodzi przepływ że przeszłam i wierzę Azure misbehaves AD w wielu krokach. Proszę wskazać, czy czegoś brakuje.
- otworzyć aplikację internetową i spróbuj najpierw zalogować się jak administratora
- muszę wyrazić zgodę na pozwolenie danych odczytać katalogu, więc to zrobić pojawia
- aplikacji (nie mam role przydzielone, co jest w porządku) - jak dotąd wszystko działa.
- I ponownie otworzyć aplikację internetową w nowej sesji incognito i spróbuj zalogować się jako użytkownik
- Teraz dostaję [
AADSTS90093: This operation can only be performed by an administrator. Sign out and sign in as an administrator or contact one of your organization's administrators.
] - admin już zgodę, więc dlaczego mam to?? - idę Spółka AD i zmienić uprawnienia aplikacji w celu włączenia Przeczytaj & danych Zapis katalog
- idę Klienta AD sprawdzić aplikację Portal a deska rozdzielcza już pokazuje nowe pozwolenie na liście. Nikt nie musiał się zgodzić! Administrator nie widzi żadnych zmian nawet przy następnym logowaniu. Jak to nie jest dziura w bezpieczeństwie?
Moje rozumienie https://msdn.microsoft.com/en-us/library/azure/dn132599.aspx że Uprawnienia aplikacji nie są przestarzałe.
UPDATE
Moja konfiguracja w webapp:
app.UseOpenIdConnectAuthentication(options =>
{
options.ClientId = Configuration.Get("ActiveDirectory:ClientId");
options.Authority = String.Format(Configuration.Get("ActiveDirectory:AadInstance"), "common/"); //"AadInstance": "https://login.windows.net/{0}"
options.PostLogoutRedirectUri = Configuration.Get("ActiveDirectory:PostLogoutRedirectUri"); //"PostLogoutRedirectUri": "https://localhost:44300/"
options.TokenValidationParameters = new System.IdentityModel.Tokens.TokenValidationParameters
{
// The following commented-out line should work according to
// http://stackoverflow.com/questions/29317910/why-does-the-role-claim-have-incorrect-type
// But, it does not work in ASP.NET5 (currently), so see the "Hack." down below
// RoleClaimType = "roles",
ValidIssuers = new[] { "https://sts.windows.net/a1028d9b-bd77-4544-8127-d3d42b9baebb/", "https://sts.windows.net/47b68455-a2e6-4114-90d6-df89d8468abc/" }
};
options.Notifications = new OpenIdConnectAuthenticationNotifications
{
RedirectToIdentityProvider = (context) =>
{
// This ensures that the address used for sign in and sign out is picked up dynamically from the request,
// which is neccessary if we want to deploy the app to different URLs (eg. localhost/immerciti-dev, immerciti.azurewebsites.net/www.immerciti.com)
string appBaseUrl = context.Request.Scheme + "://" + context.Request.Host + context.Request.PathBase;
context.ProtocolMessage.RedirectUri = appBaseUrl;
context.ProtocolMessage.PostLogoutRedirectUri = appBaseUrl;
return Task.FromResult(0);
},
AuthorizationCodeReceived = async context =>
{
// Get Access Token for User's Directory
try
{
var identity = (ClaimsIdentity)context.AuthenticationTicket.Principal.Identity;
// Hack. TODO: keep an eye on developments around here
foreach (var claim in identity.FindAll("roles"))
{
// Readd each role with the proper claim type
identity.AddClaim(new Claim(identity.RoleClaimType, claim.Value, claim.ValueType, claim.Issuer, claim.OriginalIssuer));
}
}
catch (AdalException)
{
context.HandleResponse();
context.Response.Redirect("/Error/ShowError?errorMessage=Were having trouble signing you in&signIn=true");
}
}
};
};
Cześć Gabor. Dziękuję za zgłoszenie tego. Czy możesz powiedzieć nam coś więcej o swojej aplikacji? Czy jest oparty na którejś z przykładowych aplikacji? Czy Twoja aplikacja używa przepływu OAuth lub OpenID Connect, aby poprosić o autoryzację/zgodę, czy używasz przepływu potwierdzeń WS-Fed lub SAML, i to jest prośba o zgodę? Próbujemy odtworzyć problemy, które zgłosiłeś, a więcej informacji na temat Twojej aplikacji (w tym np. Informacji o skrzypkach) naprawdę pomoże. Dzięki. –
Witam Dan, polegałem głównie na 3 przykładowych aplikacjach: WebApp-OpenIdConnect-AspNet5 (aby zobaczyć, jak skonfigurować rzeczy na ASP.NET5), WebApp-MultiTenant-OpenIdConnect-DotNet (aby zobaczyć szczegóły dla wielu dzierżawców) i WebApp -RoleClaims-DotNet (aby skonfigurować manifest aplikacji w usłudze Azure AD i zadbać o autoryzację w mojej aplikacji internetowej). Wykorzystuje więc przepływ OpenID. Dodano więcej informacji do pytania. – Gabor
Ślady mają wszystko odkodowane ... mam nadzieję, że nie za dużo, ale o ile widzę, są to tylko fałszywe dane. – Gabor