尝试开发一个UWP原型应用程序,该应用程序使用Microsoft Graph API访问有关为我公司工作的其他人的基本信息。
要进行身份验证我正在使用Microsoft.Identity.Client
NuGet包,又称MSAL
来获取OAuth令牌。
我在新App Portal中创建了原生Converged application
。我使用我的工作电子邮件地址登录了门户网站,当我查看该应用程序时会显示“此应用程序将在用于管理您的connel.hooley@modalitysystems.com帐户的Azure Active Directory实例中注册”。 。我无法在Azure门户中看到此应用程序在我的工作Azure AD实例中注册。
我在我的应用中使用了ClientID
。它具有以下重定向t:
urn:ietf:wg:oauth:2.0:oob
https://login.microsoftonline.com/common/oauth2/nativeclient
e7b70686-d176-4a1c-aae6-151221fafe0e://auth
每当我尝试登录时,我都会输入我的工作电子邮件地址,弹出窗口会重定向到我工作的登录页面。输入密码后,我被重定向到空白页面,并显示以下错误消息:
我们无法立即连接到您需要的服务。检查您的网络连接或稍后再试一次。
我可以使用我的工作电子邮件地址成功登录Graph explorer,然后访问那里的Graph API以访问我需要的信息。
我已经尝试过运行Fiddler来找出弹出窗口试图去的地方但是Fiddler运行阻止了它的工作。
我正在使用Microsoft的active-directory-dotnet-native-uwp-v2演示应用程序试图让auth正常工作:
以下是记录用户的方法:
/// <summary>
/// Call AcquireTokenAsync - to acquire a token requiring user to sign-in
/// </summary>
private async void CallGraphButton_Click(object sender, RoutedEventArgs e)
{
AuthenticationResult authResult = null;
ResultText.Text = string.Empty;
TokenInfoText.Text = string.Empty;
try
{
authResult = await App.PublicClientApp.AcquireTokenSilentAsync(scopes, App.PublicClientApp.Users.FirstOrDefault());
}
catch (MsalUiRequiredException ex)
{
// A MsalUiRequiredException happened on AcquireTokenSilentAsync. This indicates you need to call AcquireTokenAsync to acquire a token
System.Diagnostics.Debug.WriteLine($"MsalUiRequiredException: {ex.Message}");
try
{
authResult = await App.PublicClientApp.AcquireTokenAsync(scopes);
}
catch (MsalException msalex)
{
ResultText.Text = $"Error Acquiring Token:{System.Environment.NewLine}{msalex}";
}
}
catch (Exception ex)
{
ResultText.Text = $"Error Acquiring Token Silently:{System.Environment.NewLine}{ex}";
return;
}
if (authResult != null)
{
ResultText.Text = await GetHttpContentWithToken(graphAPIEndpoint, authResult.AccessToken);
DisplayBasicTokenInfo(authResult);
this.SignOutButton.Visibility = Visibility.Visible;
}
}
App.PublicClientApp.AcquireTokenAsync(scopes)
行是弹出弹出窗口的行。
以下是构建App.PublicClientApp
的行:
public static PublicClientApplication PublicClientApp { get; } = new PublicClientApplication(ClientId);
我需要做些什么来让Microsoft.Identity.Client
与我公司的AD一起工作吗?或者我可以做些什么来调查缺少的东西?
答案 0 :(得分:0)
请尝试以下方法:
确保在您的应用上启用以下设置:
按以下方式查找重定向网址:
body, html {
line-height: 15px;
}
运行应用程序,并在命中断点时复制redirectUri的值。该值应类似于以下内容:
MS-应用程式:// S-1-15-2-1352796503-54529114-405753024-3540103335-3203256200-511895534-1429095407 /