У меня в настоящее время есть бэкэнд-решение для моего приложения с использованием Azure Mobile Apps. Я включил логин, твиттер, google и Microsoft. Кроме того, я пытаюсь добавить пользовательский логин. У меня установлена учетная запись и приложение Auth0, и я могу получить токен и профиль обратно из auth0, когда я делаю запрос в приложении с помощью виджета блокировки auth0.Пользовательская аутентификация Azure для мобильных приложений с Cordova
Я следил за этим руководством: https://shellmonger.com/2016/04/08/30-days-of-zumo-v2-azure-mobile-apps-day-5-custom-authentication/ и получил этап «Пользовательская проверка JWT на сервере», но это то, где я застрял ... мой бэкэнд находится на C#, а не node.js, так как я могу сделать эквивалент этот учебник и проверить токен JWT, а затем получить доступ к контроллерам таблиц из моего внешнего приложения, используя azureClient.login/azureClient.table?
EDIT: Хорошо, так как вы будете видеть в комментариях ниже нить с @AdrianHall я был успешным в создании маркер из моей Cordova приложения, но мой камень преткновения теперь получает услугу, чтобы принять его без необходимости обменные токены. Это возможно в соответствии с опубликованным руководством.
Это мой код на стороне клиента, который в настоящее время делает auth-вызов auth0 и создает некоторую клиентскую сторону для получения идентификатора пользователя и генерирует объект currentUser, содержащий новый токен.
auth0.lock.show(auth0.options, function(err, profile, token) {
if (err) {
console.error('Error authenticating with Auth0: ', err);
alert(err);
} else {
debugger;
var userID;
if (profile.user_id.indexOf("auth0") > -1) {
userID = profile.user_id.replace("auth0|", "");
} else if (profile.user_id.indexOf("facebook") > -1) {
userID = profile.user_id.replace("facebook|", "");
} else if (profile.user_id.indexOf("twitter") > -1) {
userID = profile.user_id.replace("twitter|", "");
} else if (profile.user_id.indexOf("microsoft") > -1) {
userID = profile.user_id.replace("microsoft|", "");
} else if (profile.user_id.indexOf("google-oauth2") > -1) {
userID = profile.user_id.replace("google-oauth2|", "");
}
window.azureClient.currentUser = {
userId: userID,
profile: profile,
mobileServiceAuthenticationToken: token
};
//A client session has now been created which contains attributes relevant to the currently logged in user.
console.log("window.azureClient.currentUser", window.azureClient.currentUser);
window.localStorage.setItem("currentUser", JSON.stringify(window.azureClient.currentUser));
//Call the get profile function which will call our API to get the user's activities and bio etc.
getProfile();
}
код Backend MobileAppSettingsDictionary
settings = config.GetMobileAppSettingsProvider().GetMobileAppSettings();
if (string.IsNullOrEmpty(settings.HostName))
{
//This middleware is intended to be used locally for debugging.By default, HostName will
//only have a value when running in an App Service application.
app.UseAppServiceAuthentication(new AppServiceAuthenticationOptions
{
SigningKey = ConfigurationManager.AppSettings[""],
ValidAudiences = new[] { ConfigurationManager.AppSettings[""] },
ValidIssuers = new[] { ConfigurationManager.AppSettings["https://domain.eu.auth0.com/"] },
TokenHandler = config.GetAppServiceTokenHandler()
});
}
Благодарим за редактирование. Стыдно, что вы не могли бы дать ответ за щедрость. – anthonyhumphreys