适用于UWP的Azure AD B2C需要API范围,但我没有

时间:2017-10-06 16:48:53

标签: azure authentication uwp azure-active-directory azure-ad-b2c

在GitHub上使用 UWP sample

Azure AD B2C 需要一些可选步骤,如GitHub自述文件中所述,要求我们创建 web 步骤4 中的API ,因此在 app.xaml.cs 中编写的代码中对该Web API使用 API范围

public static string[] ApiScopes = { "https://fabrikamb2c.onmicrosoft.com/demoapi/demo.read" };

问题:我的项目还没有后端API ,我不想为我的项目制作传统的Web API,我会使用 Azure Functions 作为无服务器API。

但登录按钮会导致使用以下方法获取 authenticationToken

authResult = await App.PublicClientApp.AcquireTokenAsync(App.ApiScopes, GetUserByPolicy(App.PublicClientApp.Users, App.PolicySignUpSignIn), UIBehavior.SelectAccount, string.Empty, null, App.Authority);

正如您在上面所看到的,这里提供的是 App.ApiScopes ,这是此方法中的必须参数,如果我只在这里提供一个字符串[]列表,只有空字符串,我能够登录但我在UWP UI中的输出中没有看到任何令牌。

那么我如何绕过这个API范围问题并为自己提供一个工作示例,或者我是否必须创建 Web API 出于某种安全原因我的意思是强制性部分?

1 个答案:

答案 0 :(得分:0)

您可以使用应用的 client_id 作为范围,以获取发给自己的令牌。

如果您想要将客户端和API紧密耦合,这种方法很好,但是如果您最终拥有多个Azure功能,多个客户端并且不希望所有客户端都能够调用所有功能,那么您需要开始拆分他们的应用注册并相应地定义范围。