gpt4 book ai didi

oauth-2.0 - ADAL 4(实验性)对于 Windows 桌面/ native 和带有 B2C 的 Windows Phone 的行为有所不同

转载 作者:行者123 更新时间:2023-12-03 06:43:38 35 4
gpt4 key购买 nike

我想要创建一个具有 Azure AD B2C 身份验证的 Windows Phone 8.1 应用程序。作为基础,我使用了 B2C Windows Desktop/Native Client sample .

桌面应用程序运行得很好。在我采用 WP8.1 时,我遇到了第一个问题,我想获取 token :

result = await authContext.AcquireTokenAsync(new string[] { Globals.clientId },
null, Globals.clientId, new Uri(Globals.redirectUri),
platformParams, Globals.signInPolicy);

虽然我为桌面应用程序获得了一个漂亮而 Shiny 的 token ,但对于 WP8.1 应用程序(从 WebAuthenticationBroker 返回后),我只得到了 ...?code=...... 响应。

我不确定,但对我来说,WP8.1 库似乎以 OIDC model 的方式工作。其中第一个调用前往授权,第二个调用前往 token 端点。

从那里开始,我尝试继续使用通过

收到的授权代码
var result = await authContext.AcquireTokenByAuthorizationCodeAsync(authCode, new Uri(Globals.redirectUri),
credApp, new string[] { "" }, Globals.signInPolicy );

但无论我如何尝试传递 ClientCredentialClientAssertion,我总是会得到一个简单的 400 Bad request (不再有返回详细信息)。

有人请告诉我哪里错了和/或指出我正确的方向。

最佳答案

Windows Phone 8.1 使用延续模型,WAB 重新调用调用应用程序。查看样本 https://github.com/Azure-Samples/active-directory-dotnet-windowsphone-8.1/演示流程或者您可以直接查看https://github.com/Azure-Samples/active-directory-dotnet-windowsphone-8.1/blob/master/TodoListClient/MainPage.xaml.cs

您需要在页面上实现 IWebAuthenticationContinuable 接口(interface)。 }

    #region IWebAuthenticationContinuable implementation

// This method is automatically invoked when the application is reactivated after an authentication interaction through WebAuthenticationBroker.
public async void ContinueWebAuthentication(WebAuthenticationBrokerContinuationEventArgs args)
{
// pass the authentication interaction results to ADAL, which will conclude the token acquisition operation and invoke the callback specified in AcquireTokenAndContinue.
await authContext.ContinueAcquireTokenAsync(args);
}
#endregion

-------------------------------------------------------- ----------------------

更新

我创建了一个新的 Windows Phone 应用程序并引用了 ADAL v4。我检查了延续模型不适用于 v4。它仅由 ADAL v2 使用。确保您使用的是 adal-v4。我仍然需要添加以下代码

 protected override void OnActivated(IActivatedEventArgs args)
{

if (args is IWebAuthenticationBrokerContinuationEventArgs)
{
Microsoft.Experimental.IdentityModel.Clients.ActiveDirectory.WebAuthenticationBrokerContinuationHelper.SetWebAuthenticationBrokerContinuationEventArgs(args as IWebAuthenticationBrokerContinuationEventArgs);
}

base.OnActivated(args);
}

这将恢复 token 获取过程并返回访问 token

关于oauth-2.0 - ADAL 4(实验性)对于 Windows 桌面/ native 和带有 B2C 的 Windows Phone 的行为有所不同,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36071143/

35 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com