我想开发一个SaaS应用程序,并在Azure上部署它。由于业务逻辑会不会太复杂,所以我想作为一个入门套件JHipster使用。该应用程序将有两种类型的用户:这要使用Office 365帐户登录到应用程序的“办公室”的用户,并且想用自己的社交网络帐户像谷歌或Facebook或简单地创建一个新的本地帐户的“正常”的用户。所有账户应通过Azure的管理,没有密码应储存在我们的数据库。
第一个问题是关于Azure的:我应该使用哪种类型的AAD的? B2B还是B2C?或两者的混合?
其次关于JHipster:是否有可能配置JHipster反对AAD验证用户身份?我应该在有关身份验证创建JHipster的应用问题选择哪个选项?
第三个关于Azure的:这将是很好,如果“办公室”的用户可能对我们的SaaS应用程序添加到应用程序的Office 365的主屏幕列表。可能吗?
我只有“内部部署”的经历,所以也许我的问题很简单,但这些是我的第一个步骤到任何云,在这种情况下,到Azure上。
问候,亚采
预修课程:您需要注册了您的应用程序在蔚蓝的租户,并获取客户端ID和密码。 qazxsw POI
在这样的你application.yml文件中的设置,你应该连接到蔚蓝的广告。
Register App
您将需要更新UserService类方法的getUser()拉下正确的信息。
# ===================================================================
# 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/
是不是调用图形API一个GET而不是POST?这是否获得对后来jhipster版本改变了吗?如果是这样那么一些更多的工作需要做改变操作。另外,我不认为用户信息-URI: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("[email protected]") != null) {
user.setImageUrl((String) details.get("[email protected]"));
}
user.setActivated(true);
return user;
}
端点给你,你将不得不作出第二个电话用户角色(AD组)。当然这取决于你的IDP是如何进行内部配置。