#azure #webforms #azure-active-directory #azure-authentication
#azure #веб-формы #azure-active-directory #azure-аутентификация
Вопрос:
Я создаю аутентификацию Azure AD, допустим, мой URL-адрес приложения https://hostname/applicationName/Default.aspx
таков, что после нажатия этого URL-адреса пользователь перенаправляется на Azure login. Проблема в том, что даже если пользователь не входит в группу AD, он все равно перенаправляется на страницу приложения по умолчанию, а не выдает недопустимое сообщение пользователя.
Может кто-нибудь сообщить мне, где искать, ниже приведен фрагмент кода, который я использую в app startup.cs:
private static string clientId = ConfigurationManager.AppSettings["ClientId"];
private static string aadInstance = EnsureTrailingSlash(ConfigurationManager.AppSettings["Authority"]);
private static string tenantId = ConfigurationManager.AppSettings["Tenant"];
private static string postLogoutRedirectUri = ConfigurationManager.AppSettings["redirectUri"];
string authority = aadInstance tenantId;
public void Configuration(IAppBuilder app)
{
app.SetDefaultSignInAsAuthenticationType(CookieAuthenticationDefaults.AuthenticationType);
app.UseKentorOwinCookieSaver();
app.UseCookieAuthentication(new CookieAuthenticationOptions());
app.UseOpenIdConnectAuthentication(
new OpenIdConnectAuthenticationOptions
{
ClientId = clientId,
Authority = authority,
RedirectUri = postLogoutRedirectUri,
PostLogoutRedirectUri = postLogoutRedirectUri,
Scope = OpenIdConnectScope.OpenIdProfile,
ResponseType = OpenIdConnectResponseType.IdToken,
TokenValidationParameters = new TokenValidationParameters()
{
ValidateIssuer = true
},
Notifications = new OpenIdConnectAuthenticationNotifications
{
AuthenticationFailed = OnAuthenticationFailed
}
}
);
}
Перенаправление в моем файле web.config https://hostname/applicationName/Default.aspx
На моей домашней странице приложения у меня есть следующий код в Page_Load()
if (!Page.IsPostBack)
{
if (!Request.IsAuthenticated)
{
HttpContext.Current.GetOwinContext().Authentication.Challenge(
new AuthenticationProperties { RedirectUri = ConfigurationManager.AppSettings["redirectUri"] },
OpenIdConnectAuthenticationDefaults.AuthenticationType);
// Is this RedirectUri property correct?
}
//Application code
}
Я установил следующее в startup.cs
TokenValidationParameters = new TokenValidationParameters()
{
ValidateIssuer = true
}
Дайте мне знать, если потребуются какие-либо дополнительные данные.
Ответ №1:
Согласно вашему описанию «если пользователь не является частью группы AD, он все равно перенаправляется на страницу приложения по умолчанию», я предположил, что вы можете установить значение «ConfigurationManager».Настройки приложений [«Арендатор»];’ как ‘общие’.
Я тестировал на своем месте, и когда я установил идентификатор клиента моей организации, я не могу войти в систему с помощью внешнего пользователя. И со значением «общий» это означает, что любые пользователи могут получить доступ к приложению, чтобы я мог успешно войти в систему с учетной записью пользователя, которую сейчас нельзя использовать для входа в систему.
Пожалуйста, дайте мне знать, если это не сработает.
Ответ №2:
У вас есть несколько вариантов в зависимости от сценария, которого вы пытаетесь достичь.
Если вы хотите, чтобы пользователи, не входящие в ваш клиент Azure AD, не могли входить в систему, тогда вы должны убедиться, что свойство клиента не является «общим», а вашим собственным идентификатором клиента, который вы можете получить с портала Azure, как показано ниже
Если вы хотите добиться более сложного процесса групповой аутентификации, вы можете обратиться к этому образцу от Microsoft для получения всех подробностей