JHipster с Azure Active Directory вместо Keycloak или Okta - PullRequest
0 голосов
/ 09 октября 2018

Я хочу разработать приложение SaaS и развернуть его в Azure.Потому что бизнес-логика будет не такой сложной, поэтому я хочу использовать в качестве стартового набора JHipster.Приложение будет иметь два типа пользователей: «офисные» пользователи, которые хотят войти в приложение, используя учетную запись Office 365, и «обычные» пользователи, которые хотят использовать свои социальные учетные записи, такие как Google или Facebook, или просто создать новую локальную учетную запись.,Все учетные записи должны управляться Azure, и в нашей базе данных не должно храниться ни одного пароля.

Первый вопрос касается Azure: какой тип AAD следует использовать?B2B или B2C?Или сочетание обоих?

Второе о JHipster: возможно ли настроить JHipster для аутентификации пользователей по AAD?Какой вариант следует выбрать в вопросе об аутентификации при создании приложения JHipster?

В-третьих, о Azure: было бы неплохо, если бы пользователь "office" мог добавить наше приложение SaaS в список приложений в главном Office 365.экран.Возможно ли это?

У меня есть только "локальный" опыт, поэтому, возможно, мои вопросы просты, но это мои первые шаги в любые облака, в данном случае в Azure.

С уважением,Яцек

Ответы [ 2 ]

0 голосов
/ 11 июня 2019

Не является ли вызов API графа GET вместо POST?Изменилось ли это в более поздних выпусках jhipster?Если это так, то нужно еще немного поработать, чтобы изменить операцию.Кроме того, я не думаю, что конечная точка user-info-uri: https://graph.windows.net/me?api-version=1.6 дает вам роли пользователей (группы AD), которые вам нужно будет сделать во время второго вызова.Это, конечно, зависит от того, как ваш IDP был настроен внутри.

0 голосов
/ 08 февраля 2019

Предварительные реквизиты: вам необходимо зарегистрировать свое приложение в Azure Tenent и получить идентификатор клиента и секрет. Зарегистрируйте приложение

В ваших настройках файла application.yml вы должны подключиться к Azure Ad.

# ===================================================================
# OpenID Connect Settings. Default settings are for Azure
# ===================================================================
security:
    oauth2:
    client:
        access-token-uri: https://login.microsoftonline.com/common/oauth2/token
        user-authorization-uri: https://login.microsoftonline.com/common/oauth2/authorize
        client-id: <<yourclientid>>
        client-secret: <<yourregistry>>
        client-authentication-scheme: query
        preEstablishedRedirectUri: http://localhost:8885/login
        useCurrentUri: false
    resource:
        user-info-uri: https://graph.windows.net/me?api-version=1.6
        id:  https://graph.windows.net/

Вам потребуется обновить метод класса UserService getUser (), чтобы вывести правильную информацию.

private static User getUser(Map<String, Object> details) {
    User user = new User();
    user.setId((String) details.get("userPrincipalName"));
    user.setLogin(((String) details.get("userPrincipalName")).toLowerCase());
    if (details.get("givenName") != null) {
        user.setFirstName((String) details.get("givenName"));
    }
    if (details.get("surname") != null) {
        user.setLastName((String) details.get("surname"));
    }
    if (details.get("displayName") != null) {
        user.setDisplayName((String) details.get("displayName"));
    }
    if (details.get("email_verified") != null) {
        user.setActivated((Boolean) details.get("email_verified"));
    }
    if (details.get("userPrincipalName") != null) {
        user.setEmail(((String) details.get("userPrincipalName")).toLowerCase());
    }
    if (details.get("langKey") != null) {
        user.setLangKey((String) details.get("langKey"));
    } else if (details.get("locale") != null) {
        String locale = (String) details.get("locale");
        if (locale.contains("-")) {
          String langKey = locale.substring(0, locale.indexOf("-"));
          user.setLangKey(langKey);
        } else if (locale.contains("_")) {
          String langKey = locale.substring(0, locale.indexOf("_"));
          user.setLangKey(langKey);
        }
    }
    if (details.get("thumbnailPhoto@odata.mediaEditLink") != null) {
        user.setImageUrl((String) details.get("thumbnailPhoto@odata.mediaEditLink"));
    }
    user.setActivated(true);
    return user;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...