Asp.net core 如何使MS Identity SPA示例适用于组织和个人帐户
我跟着做我自己的项目 我的项目已经完成了Asp.net core 如何使MS Identity SPA示例适用于组织和个人帐户,asp.net-core,microsoft-graph-api,msal,microsoft-identity-platform,Asp.net Core,Microsoft Graph Api,Msal,Microsoft Identity Platform,我跟着做我自己的项目 我的项目已经完成了 反应 Net核心Web Api 从Hotmail访问用户的电子邮件。Reactjs应用程序和WebApi位于不同的服务器上 这个例子几乎就是我所需要的,但它只接受同一组织内的帐户,不接受个人帐户 我想我只需要在相关配置中将租户ID从特定ID更改为“公共”,它就可以工作了。 我还在Azure上注册了Web Api和Reactjs支持的帐户类型,以使用 AnyOrg+个人账户 这是Angular的配置 { "auth": { "clientI
{
"auth": {
"clientId": "28xxx12",
"authority": "https://login.microsoftonline.com/common",
"validateAuthority": true,
"redirectUri": "http://localhost:4200",
"postLogoutRedirectUri": "https://localhost:44321/signout-oidc",
"navigateToLoginRequestUrl": true
},
"cache": {
"cacheLocation": "localStorage"
},
"scopes": {
"loginRequest": [ "openid", "profile", "Mail.Read", "offline_access", "user.read"]
},
"resources": {
"todoListApi": {
"resourceUri": "https://localhost:44351/api/todolist/",
"resourceScope": "https://papayee008.onmicrosoft.com/papayee008/access_as_user"
}
}
}
以下是Web Api的配置:
{
"AzureAd": {
"Instance": "https://login.microsoftonline.com/",
"Domain": "papayee008.onmicrosoft.com",
"TenantId": "common",
"ClientId": "28xxx12"
},
"https_port": 44351,
"Logging": {
"LogLevel": {
"Default": "Information",
"Microsoft": "Warning",
"Microsoft.Hosting.Lifetime": "Information"
}
},
"AllowedHosts": "*"
}
但当我尝试使用我的个人帐户登录时,它向我抛出了以下错误:
最简单的解决方案是对SPA和API使用相同的应用程序/客户端id。也就是说,不必为每个组件单独注册应用程序(如自述文件中所建议的),只需注册一个应用程序,将注册服务应用程序(TodoListAPI)和注册客户端应用程序(TodoListSPA)的步骤结合在样本存储库的自述文件中即可
编辑:根据上一个屏幕截图判断,您在AAD门户上对“支持的帐户类型”所做的更改也可能尚未生效。通常会有几秒钟的延迟,如果您在这段时间内尝试使用个人帐户登录,屏幕截图中可能会出现问题。如果您使用的是广告,则不能是您的个人帐户。正如您的顶部屏幕截图所示,您正在尝试使用Azure广告。请在“示例问题”页面上提出此问题。它引起了公众的注意developer@KalyanKrishna我已经这样做了,这是唯一的问题,从那时起2天过去了,没有更新。我打赌SOF比那里更受欢迎:)hi@KarthikDV我使用“common”作为我的租户ID:
common使用他们的工作和学校帐户或个人Microsoft帐户登录用户
这意味着我可以同时使用组织帐户和个人帐户。除非Microsoft document有错误。谢谢,我很乐意在前端和后端使用相同的客户端ID。使用相同的客户端ID和使用不同的客户端ID之间有什么区别(否则,明显的区别,例如注册1个应用程序和注册2个应用程序)以前的Azure AD(v1.0)不支持在不同的应用程序中使用相同的ID。这在Azure AD v2.0应用程序模型中有所改变,因为具有多个子组件(例如,许多微服务)的“应用程序”变得越来越常见。共享客户机ID的一个区别或优点是,它使共享变得更容易。另一个区别(缺点)是,对不相关的应用程序使用相同的客户端ID可能会产生安全风险谢谢@derisen,请您在这里提供帮助: