如何跨ASP Net Core2,VueJS,Xamarin.Forms和Azure Functions C#预编译(v



我正在开发一个门户,并且有这样的场景:

  1. 用户进入 ASP.Net Core 2 Razor Pages Web 门户,使用 Facebook 注册或登录

  2. 在主页 index.cshtml 上,有 HTML 和一个简单的 VueJS,属性为 {{ Account.Total }}

  3. VueJS 带来了这个 Account.Total value from a Azure Function using Axios Javascript library https://myfunctionapp.azurewebsites.net/api/GetAccountTotal?AccountId=ABC。

  4. 用户还登录 UWP 和移动 Xamarin.Forms 应用

  5. 在 Xamarin.Forms 中制作的移动应用程序也调用此 Azure 函数来获取 Account.Total

  6. UWP 应用还会调用此 Azure 函数来获取帐户。

这个想法是,ASP.Net 核心只是一个客户端,如UWP和Xamarin应用。Azure Functions 将是后端,就像 Web API 一样;Microsoft图Facebook身份验证将保护所有这些并识别用户。

Azure函数需要使用相同的图形/Azure AD B2C 身份验证。用户只需在 ASP.Net Razor 页面上登录一次,所有相关服务和调用都必须读取这些凭据。

如何配置,以及需要什么代码来执行此操作 登录并验证Microsoft 图形 B2CFacebook 用户帐户跨 ASP Net Core2、VueJS 和 Azure Functions C# 预编译(v1 和 v2)?

所有这些看起来都很明显,但经过几天的尝试,我将在这里发布步骤。 (将编辑此答案以提供更多详细信息)

但最重要的最难找到的部分(按顺序)是:

1)在我添加额外的登录参数后它工作了

"additionalLoginParams": ["response_type=code id_token", "resource=<app_id>"]

在 https://resources.azure.com/

在页面顶部,选择"读/写"。 在左侧浏览器中,导航到订阅>资源组>>提供程序> Microsoft.Web>站点>>配置>身份验证设置。

单击编辑。

修改以下属性。替换为要访问的服务的 Azure Active Directory 应用程序 ID。

2)在 ASP.Net Core 2上,您输入登录和注销:

<a href="~/.auth/login/aad?post_login_redirect_url=/Index">LOGIN</a><br />
<a href="~/.auth/logout?post_logout_redirect_uri=/Bye">LOGOUT</a><br />

您可以要求

string UserName = (string)Request.Headers["X-MS-CLIENT-PRINCIPAL-NAME"];
string UserId = (string)Request.Headers["X-MS-CLIENT-PRINCIPAL-ID"]; 
string Token = Request.Headers["X-MS-TOKEN-AAD-ID-TOKEN"];

3) 然后在 JavaScript 上,必须调用发送授权标头持有者令牌的 Azure 函数

function WhoAmI() {
var Token = "@ViewData["Token"]";
var url = "https://MyFUNCTION.azurewebsites.net/api/WhoAmI";
var headers = { headers: { "Authorization": `Bearer ${Token}` } };
//if (Token == "") headers = null;
axios.get(url,
headers
).then(response => {
console.log("WhoAmI()");
console.log(response.data);
});
}

来源: https://learn.microsoft.com/en-us/azure/app-service/app-service-authentication-how-to#refresh-access-tokens

也许我还需要使用 0) ADAL.NET (Microsoft.IdentityModel.Clients.ActiveDirectory)

最新更新