首页 文章

如何在ASP Net Core2,VueJS,Xamarin.Forms和Azure函数C#预编译(v1和v2)上登录和验证Microsoft Graph B2C用户?

提问于
浏览
-1

我正在开发一个门户网站,并有这种情况:

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

  • 在主页index.cshtml上,有一个HTML和一个带有属性{}的简单VueJS

  • VueJS使用Axios Javascript库从Azure功能中获取此Account.Total值 . https://myfunctionapp.azurewebsites.net/api/GetAccountTotal?AccountId=ABC

  • 用户还登录UWP和Mobile Xamarin.Forms应用程序

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

  • UWP应用程序还调用此Azure函数来获取Account.Total

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

Azure功能需要使用相同的Graph / Azure AD B2C身份验证 . 用户只需在ASP.Net Razor页面登录一次,所有相关服务和呼叫都必须读取这些凭据 .

如何配置以及执行此操作所需的代码在ASP Net Core2,VueJS和Azure Functions C#预编译(v1和v2)上登录和验证 Microsoft Graph B2C Facebook用户帐户?

1 回答

  • 0

    这一切看起来很明显,但经过几天的尝试,我会在这里发布步骤 . (编辑此答案以提供更多详细信息)

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

    1)我添加了additionalLoginParams后它工作了

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

    https://resources.azure.com/

    在页面顶部,选择“读/写” . 在左侧浏览器中,导航到subscriptions> resourceGroups> providers> Microsoft.Web> sites >> config> authsettings .

    单击编辑 .

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

    2)在ASP.Net Core 2上你放入登录和注销:

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

    你可以要求

    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://docs.microsoft.com/en-us/azure/app-service/app-service-authentication-how-to#refresh-access-tokens

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

相关问题