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 出于某种安全原因我的意思是强制性部分?
答案 0 :(得分:0)
您可以使用应用的 client_id 作为范围,以获取发给自己的令牌。
如果您想要将客户端和API紧密耦合,这种方法很好,但是如果您最终拥有多个Azure功能,多个客户端并且不希望所有客户端都能够调用所有功能,那么您需要开始拆分他们的应用注册并相应地定义范围。