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

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

Azure AD B2CUWP sample在 GitHub 上需要一些可选步骤,如 GitHub 自述文件中所述,要求我们在步骤 4 中创建 Web API,从而使用 API 范围对于 app.xaml.cs

中编写的代码中的 Web 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 ,这是此方法中的必须参数,如果我仅在这里提供带有空字符串的 string[] 列表,我就可以登录,但我在 UWP UI 的输出中没有看到任何 token 。

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

最佳答案

您可以使用应用的 client_id 作为范围,以获得颁发给自身的 token 。

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

关于适用于 UWP 的 Azure AD B2C 需要 API 范围,但我没有,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46610454/

相关文章:

Azure队列接收http请求

.net - Azure 角色内缓存作为 NHibernate 二级缓存?

PHP:如何检查用户是否已经登录,否则重定向到登录页面

java - Android应用程序登录抽屉导航无法点击 fragment

python - 使用外部 Web 服务的 Django 身份验证

c# - UWP Windows IoT核心流路由

javascript - UWP:如何访问应用程序数据

gridview - 响应式 Gridview 列标题

javascript - 续订过期的 Azure 移动服务 token

azure - Terraform - 如何在 AKS 集群上安装 AZURE CNI 并设置 POD IP 范围?