我将App Services设置为使用Active Directory B2C进行身份验证和授权。如果我直接通过网址https:// {myfunctionapp} .azurewebsites.com / .auth / login / aad登录,我会被路由到登录/注册页面,所有内容似乎都运行正常。
我定义了以下函数,由网页上的链接调用。调用该函数后,它将返回' 错误:您无权查看此目录或页面。'
function callEmailLogin() {
var functionAppBaseUrl = 'https://<myfunctionapp>.azurewebsites.com';
var mobileClient = new WindowsAzure.MobileServiceClient(functionAppBaseUrl);
mobileClient.login('aad', {'access_token': '<what goes here?>'})
.done(function (results) {
log('You are now logged in as: ' + results.userId);
emailLink.innerText = 'Sign-out';
}, function (err) {
log(err);
emailLink.innerText = 'Sign-in/Sign-up';
});
}
我跟随Chris Gillum在这里发帖,用App Services设置ADB2C https://blogs.msdn.microsoft.com/appserviceteam/2016/06/22/app-service-auth-and-azure-ad-b2c/
我按照Stuart Leek的帖子创建了简单的网络客户端,但代码中没有AAD示例,而且效果不佳 https://blogs.msdn.microsoft.com/stuartleeks/2018/02/19/azure-functions-and-app-service-authentication/
我不确定&#39; access_token &#39;的登录呼叫中有什么内容,我认为它是AAD Advanced中设置的客户端ID设置,它是AD-B2C目录应用程序设置中的应用程序ID。
答案 0 :(得分:0)
我发现了我的答案,我太过刻苦了。
我发现您不需要将 access_token 发送给aad EasyAuth提供商。修改如下,它的工作原理!
function callEmailLogin() {
mobileClient.login('aad')
.done(function (results) {
log('You are now logged in as: ' + results.userId);
emailLink.innerText = 'Sign-out';
}, function (err) {
log(err);
emailLink.innerText = 'Sign-in/Sign-up';
});
}
有一个问题,它没有将电子邮件声明返回为&#34; typ&#34;:&#34; http://schemas.xmlsoap.org/ws/2005/05/identity/claims/emailaddress&#34;,它将其返回为& #34;典型值&#34;:&#34;电子邮件&#34 ;.我只是快速解决这个问题,但有人知道电子邮件声称是非标准的吗?