Этот сценарий предназначен для приложения UWP, для которого необходимо использовать аутентификацию домена Windows.
При создании приложений Windows Forms я могу использовать приведенный ниже код, чтобы пользователь вводил свои учетные данные домена, чтобы проверить пользователя, а затем предоставить разрешение на выполнение задач в приложении.
Приведенный ниже код отлично работает в приложениях Windows Forms, например, если пользователь подключен к сети, он аутентифицируется на сервере и, кроме того, проверяет с помощью кэшированных учетных данных.
Как я могу проверить учетные данные активного каталога как на сервере, так и локально кэшироваться в приложении UWP?
private void button1_Click(object sender, EventArgs e)
{
bool valid = false;
try
{
using (PrincipalContext context = new PrincipalContext(ContextType.Domain))
{
valid = context.ValidateCredentials(textBox1.Text, textBox2.Text);
if (valid)
{
// Login with server credentials successful
MessageBox.Show("Successfully Logged In");
}
else
{
// Login with server credentials failed
MessageBox.Show("Invalid UserName/Password");
}
}
}
catch (PrincipalServerDownException exPSD)
{
//server is down; check local cache
MessageBox.Show("server is down; check local cache");
valid = false;
using (PrincipalContext checkpass = new PrincipalContext(ContextType.Machine)) //checks local machine first
{
valid = checkpass.ValidateCredentials(textBox1.Text, textBox2.Text);
if (valid)
{
// Login with cached credentials successful
MessageBox.Show("Successfully Logged In");
}
else
{
// Login with cached credentials failed
MessageBox.Show("Invalid UserName/Password");
}
}
}
catch (Exception ex)
{
//some other exception; show general message
MessageBox.Show("some other exception; show general message");
}
}