使用 Azure 应用服务 - Azure AD B2 - MobileServiceClient - 身份验证失败
Using Azure App Services - Azure AD B2 - MobileServiceClient - authentication fails
我将应用服务设置为使用 Active Directory B2C 进行身份验证和授权。如果我直接通过 url https://{myfunctionapp}.azurewebsites.com/.auth/login/aad 登录,我将被路由到 Sign-In/Sign-Up 页面并且一切似乎都运行良好。
我定义了以下由网页上的 link 调用的函数。调用该函数时 returns '错误:您无权查看此目录或页面。'
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 的 post 此处使用应用服务设置 ADB2C
https://blogs.msdn.microsoft.com/appserviceteam/2016/06/22/app-service-auth-and-azure-ad-b2c/
我按照 Stuart Leek 的 post 这里创建了简单的 Web 客户端,但是代码中没有 AAD 示例,而且效果不佳
https://blogs.msdn.microsoft.com/stuartleeks/2018/02/19/azure-functions-and-app-service-authentication/
我不确定“access_token”的登录调用中发生了什么,我假设它是 AAD 高级设置中设置的客户端 ID这是来自 AD-B2C 目录应用程序设置的应用程序 ID。
我找到了我的答案,我太难了。
我发现您不需要将 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';
});
}
有一个问题,它没有将电子邮件声明返回为 "typ":“http://schemas.xmlsoap.org/ws/2005/05/identity/claims/emailaddress”,而是将其返回为 "typ" :"emails"。我只是快速解决了这个问题,但是有人知道电子邮件声明是非标准的吗?
我将应用服务设置为使用 Active Directory B2C 进行身份验证和授权。如果我直接通过 url https://{myfunctionapp}.azurewebsites.com/.auth/login/aad 登录,我将被路由到 Sign-In/Sign-Up 页面并且一切似乎都运行良好。
我定义了以下由网页上的 link 调用的函数。调用该函数时 returns '错误:您无权查看此目录或页面。'
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 的 post 此处使用应用服务设置 ADB2C https://blogs.msdn.microsoft.com/appserviceteam/2016/06/22/app-service-auth-and-azure-ad-b2c/
我按照 Stuart Leek 的 post 这里创建了简单的 Web 客户端,但是代码中没有 AAD 示例,而且效果不佳 https://blogs.msdn.microsoft.com/stuartleeks/2018/02/19/azure-functions-and-app-service-authentication/
我不确定“access_token”的登录调用中发生了什么,我假设它是 AAD 高级设置中设置的客户端 ID这是来自 AD-B2C 目录应用程序设置的应用程序 ID。
我找到了我的答案,我太难了。
我发现您不需要将 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';
});
}
有一个问题,它没有将电子邮件声明返回为 "typ":“http://schemas.xmlsoap.org/ws/2005/05/identity/claims/emailaddress”,而是将其返回为 "typ" :"emails"。我只是快速解决了这个问题,但是有人知道电子邮件声明是非标准的吗?