C# Xamarin Azure活动目录重定向URI错误
我正在开发一个Xamarin应用程序,它需要通过Azure广告对用户进行身份验证,为此我使用Microsoft.Identity.Client nugget 应用程序可以转到microsoft SSO页面,但点击登录按钮后,页面返回错误:AADSTS50011:请求中指定的回复url与为应用程序配置的回复url不匹配:[ApplicationID] 应用程序类别:C# Xamarin Azure活动目录重定向URI错误,c#,xamarin.forms,azure-active-directory,C#,Xamarin.forms,Azure Active Directory,我正在开发一个Xamarin应用程序,它需要通过Azure广告对用户进行身份验证,为此我使用Microsoft.Identity.Client nugget 应用程序可以转到microsoft SSO页面,但点击登录按钮后,页面返回错误:AADSTS50011:请求中指定的回复url与为应用程序配置的回复url不匹配:[ApplicationID] 应用程序类别: public static string ClientID = [ApplicationID]; public s
public static string ClientID = [ApplicationID];
public static string[] Scopes = { "User.Read" };
public static string Username = string.Empty;
public static UIParent UiParent { get; set; }
public App()
{
InitializeComponent();
PCA = new PublicClientApplication(ClientID);
PCA.RedirectUri = $"msal{App.ClientID}://auth";
//PCA.RedirectUri = $"AppSGA://auth";
MainPage = new Paginas.Login();
}
在构造函数的第四行中,如果我使用PCA.RedirectUri=AppSGA://auth;而不是PCA.RedirectUri=$msal{App.ClientID}://auth;
它不会返回错误,但sso页面将永远加载而没有任何响应
登录页面中的登录方法:
private async void ADLogin()
{
AuthenticationResult authResult = null;
IEnumerable<IAccount> accounts = await App.PCA.GetAccountsAsync();
try
{
IAccount firstAccount = accounts.FirstOrDefault();
authResult = await App.PCA.AcquireTokenSilentAsync(App.Scopes, firstAccount);
await UserDataAsync(authResult.AccessToken).ConfigureAwait(false);
}
catch (MsalUiRequiredException ex)
{
try
{
authResult = await App.PCA.AcquireTokenAsync(App.Scopes, App.UiParent);
await UserDataAsync(authResult.AccessToken);
}
catch (Exception ex2)
{
}
}
}
有人知道问题的原因吗?这通常是因为门户中配置的回复URL与应用程序指定的URL不同。这一定是一模一样的 下面是修复此问题的教程。适用于应用程序服务,但步骤相同:
有时需要几分钟才能完成此更改-我经常被抓到,因为我在AAD中更改了此设置,但认为它没有得到修复,因为它不会立即开始工作。这通常是因为门户中配置的回复URL与应用程序指定的URL不同。这一定是一模一样的 下面是修复此问题的教程。适用于应用程序服务,但步骤相同: 有时,这项更改需要几分钟才能完成-我经常被发现,因为我在AAD中更改了此设置,但认为它没有得到修复,因为它没有立即开始工作。PCA.RedirectUri=$msal{App.ClientID}://auth;是使用MSAL时Xamarin Android和iOS的默认重定向URI的格式 给你 如果您使用的是Android,则需要在AndroidManifest.xml中包含以下内容: 这里有更多和更多
也应该考虑升级到MSAL v3.x。这里有一个指向的链接,它概述了如何迁移到新的构建器模式以创建公共客户端和处理acquire令牌调用。
PCA.RedirectUri=$msal{App.ClientID}://auth;是使用MSAL时Xamarin Android和iOS的默认重定向URI的格式 给你 如果您使用的是Android,则需要在AndroidManifest.xml中包含以下内容: 这里有更多和更多也应该考虑升级到MSAL v3.x。这里有一个指向的链接,概述了如何迁移到新的构建器模式,以创建公共客户端并处理acquire令牌调用。
重定向uri有问题。重定向URI是Azure AD用于返回令牌响应的方案和字符串组合。输入一个值,例如,.Hi Tony,我更改了应用程序和Azure中的de URI,但也不起作用,相同的错误重定向url应该是在用户登录后显示的url。您可以调试以查看请求url中重定向url的值吗?我无法在.AcquireTokenAsync中进行调试,但如果我在到达此行之前进行调试,uri将返回,您可以使用fiddler捕获请求。重定向uri有问题。重定向URI是Azure AD用于返回令牌响应的方案和字符串组合。输入一个值,例如,.Hi Tony,我更改了应用程序和Azure中的de URI,但也不起作用,相同的错误重定向url应该是在用户登录后显示的url。您可以调试以查看请求url中重定向url的值吗?我无法在.AcquireTokenAsync中进行调试,但如果在它转到此行之前进行调试,uri将返回,您可以使用fiddler捕获请求。@rodrigo.cantunes awesome@罗德里戈,这首歌太棒了! {
"appId": AppID,
"appRoles": [],
"availableToOtherTenants": true,
"displayName": "AppSGA",
"errorUrl": null,
"groupMembershipClaims": null,
"optionalClaims": null,
"acceptMappedClaims": null,
"homepage": null,
"informationalUrls": {
"privacy": null,
"termsOfService": null
},
"identifierUris": [],
"keyCredentials": [],
"knownClientApplications": [],
"logoutUrl": null,
"oauth2AllowImplicitFlow": true,
"oauth2AllowUrlPathMatching": true,
"oauth2Permissions": [],
"oauth2RequirePostResponse": false,
"objectId": [ObjectId],
"parentalControlSettings": {
"countriesBlockedForMinors": [],
"legalAgeGroupRule": "Allow"
},
"passwordCredentials": [],
"publicClient": true,
"replyUrls": [
"AppSGA://auth"
],
"requiredResourceAccess": [
{
"resourceAppId": resourceAppId,
"resourceAccess": [
{
"id": id,
"type": "Scope"
}
]
},
{
"resourceAppId": resourceAppId
"resourceAccess": [
{
"id": id,
"type": "Scope"
}
]
}
],
"samlMetadataUrl": null
}