我想集成一个非常标准的功能:为用户(移动和网络)提供选项,使用电子邮件/密码登录或使用RBAC的Facebook(谷歌)帐户(不同的用户可能有不同的角色,如用户,版主,管理员,创作者等).这基本上是我想要的登录:
我浏览了许多AWS教程和其他材料.我掌握了如何实现它,但我仍然没有完整的图片.希望有人可以帮助我.
这是我目前的理解(请纠正我,我错了).
1)对于电子邮件/密码注册/登录我使用用户池.当用户登录时,我调用authenticateUser(我正在使用JS SDK):
cognitoUser.authenticateUser(authenticationDetails, {
..
})
Run Code Online (Sandbox Code Playgroud)
在哪里onSuccess
2)对于facebook登录,我使用联合身份
Q1.注册/登录是否有效且相当完整?我错过了什么吗?
Q2.我应该如何存储Facebook用户?我可以在用户池中执行此操作吗?我的印象是它不可能,但这意味着我有2个不同的用户目录:一个在UserPool中,另一个在另一个地方(比如说在DynamoDB中)
Q3.如果我必须将用户存储在不同的地方(UserPool和DynamoDB),这意味着我有2个用户,基本上是一个用户,谁首先注册了电子邮件/密码,然后决定使用Facebook - 这对我作为应用管理员和用户都不方便.如何应对这种情况?
Q4.如何管理使用facebook令牌登录的用户组(如用户,版主,管理员,创建者等)?
Q5.对于Facebook登录用户,我应该如何限制对AWS以外的资源的访问?
Q6.这有什么实际的例子吗?
谢谢!
amazon-web-services facebook-login amazon-cognito amazon-cognito-facebook aws-cognito
我正在开发一个全新的批量插件,并且需要通过所有的vol-test测试。我已经成功通过了所有测试(在安装了插件的环境中),但第一个测试除外docker plugin install。事实是,有三种可能的方式可以安装自定义插件:
.sock文件是UNIX域套接字。
.spec文件是包含URL的文本文件,例如unix:///other.sock或tcp:// localhost:8080。
.json文件是包含插件完整json规范的文本文件。
我们使用json,这只是实现docker API的REST服务器(用java,spring编写)。它的安装过程很简单:只需将json文件复制到其中/etc/docker/plugins,dockerd就会自动发现它。
当我尝试将插件集成到docker plugin install命令中时,问题就来了。由于它说在这里:
Docker首先在您的Docker主机上寻找插件。如果该插件在本地不存在,则将该插件从注册表中拉出。
我们的安装过程不假定连接到私有或公共注册表,因此我们需要第一个docker plugin create命令才能在本地创建插件。这就是我很难理解如何使用基于json的插件做到这一点的地方。根据此文档,我需要指定插件的路径。如果我使用它需要一个目录名config.json和rootfs存在于该目录中。
但
1 config.json-这是一个配置,它描述.sock格式CONFIGS,而不是.json格式(请纠正我,如果我错了)
2.我如何创建根文件系统,为什么我需要它,如果我的插件仅仅是一个独立的REST服务,它甚至不在容器中?
感谢任何帮助。
我正在为已经使用AWS Cognito用户池的Angular2-app实施Facebook身份验证。
使用ngx-facebook(https://github.com/zyra/ngx-facebook),我设法使用Facebook和Cognito身份池对自己进行身份验证:
loginWithFacebook(): void {
AWS.config.update({region:AWS_CONFIG.REGION});
this.fb.login()
.then((response: LoginResponse) => {
console.log(response.authResponse.accessToken);
AWS.config.credentials = new AWS.CognitoIdentityCredentials({
IdentityPoolId: AWS_CONFIG.IDENTITY_POOL_ID,
Logins: {
'graph.facebook.com': response.authResponse.accessToken
}
});
AWS.config.credentials.refresh((error) => {
if (error) {
console.error(error);
} else {
console.log('Successfully logged in');
}
});
})
.catch((error: any) => console.error(error));
}
Run Code Online (Sandbox Code Playgroud)
但是现在:如何将Facebook用户与现有用户池集成在一起?
有用于登录和注册用户池的功能,最佳的解决方案显然是对Facebook用户也使用现有功能。
后端是无服务器的(Lambdas / API网关),并使用连接到现有用户池的授权器。
我在使用 Spring Boot 的 OAuth2 功能设置简单的微服务系统时遇到问题。
我想做的是搭建一个Spring Boot Authorization Server来处理注册、授权和用户数据管理。除此之外,我想设置一个资源服务器来处理应用程序的逻辑。
由于所有数据都与用户 ID 相关,因此资源服务器必须向授权服务器请求 ID。因此,我设置了以下用户信息端点:
@Controller
public class UserInfoEndpoint {
private UserManagementBean userManagementBean;
@Autowired
public UserInfoEndpoint(final UserManagementBean userManagementBean) {
this.userManagementBean = userManagementBean;
}
@GetMapping("/user/me")
@ResponseBody
public Principal user(final Principal principal) throws PRPException {
User user = userManagementBean.loadUser(principal.getName());
@SuppressWarnings("unused")
Principal retVal = new Principal() {
@Override
public String getName() {
return user.getId().toString();
}
public String getPrimaryEmail() {
return user.getPrimaryEmail();
}
};
return retVal;
}
}
Run Code Online (Sandbox Code Playgroud)
目前,我正在使用 JWK 来签署令牌。我可以使用 Postman 访问此端点,在那里我得到以下结果:
{
"primaryEmail": …Run Code Online (Sandbox Code Playgroud) 我有一个类似于此处提出的问题,但没有答案.在maven项目中有以下结构(标准):
parent-pom - which is a parent for all others
|_reactor - which is a concrete project, parent-pom is a parent
|_module_1 - reactor is a parent
|_module_2
...
|_module_n
Run Code Online (Sandbox Code Playgroud)
git-commit-id-plugin在parent-pom中配置,而在其他任何地方都没有.
直到最近一切都很好:我能够使用mvn clean install分别构建整个reactor项目和所有模块.然后我添加了一个新模块(比如说module_n1),我相信构建一直很好,直到大规模合并.现在我得到以下情况:reactor构建成功,每个模块分别从1到n构建成功.但是module_n1失败并出现以下错误:
[ERROR] Failed to execute goal pl.project13.maven:git-commit-id-plugin:2.1.7:revision (default) on project module_n1: .git directory could not be found! Please specify a valid [dotGitDirectory] in your pom.xml
Run Code Online (Sandbox Code Playgroud)
reactor模块下有一个.git文件夹.作为一项实验,我将其删除并为其他模块获得相同的错误.
在构建期间,一个特定模块无法找到.git文件夹的原因是什么?
谢谢.
我建立一个RESTful API的应用程序,移动\ Web后端(姑且称之为MyBackendApp)和我正在寻找一个应用程序的用户的身份验证和授权当代的解决方案.后端的主要语言是Java.综观其他应用程序,其中许多人提供了多种身份验证方法的用户:使用外部到App帐户(如Facebook,谷歌,雅虎,的OpenID等)或内部(电子邮件\密码).像Stackoverflow这样的东西在注册\登录.我阅读了很多关于OAuth2的消息来源,我也习惯使用Spring Security来实现内部用户帐户和会话管理.但我很难把两种方法放在一起.
为简单起见,我在这里使用Facebook术语,但假设更一般的含义:来自任何外部提供商的MyBackendApp账户外部认证.
我的理解是,如果用户已经拥有来自Facebook的authToken(他已经使用他的Facebook应用程序登录)存储在他的移动设备中的某个位置,那么只需获取authToken(我相信我在Android SDK中看到了方法,如果我',请纠正我我错了).否则,需要通过标准OAuth过程从提供商(Facebook)接收authToken.
现在,拥有来自提供者MyBackendApp的authToken和密钥可以从令牌中检索用户唯一ID和电子邮件,并且:
注册.如果用户没有注册,那么他会经历注册过程:MyBackendApp在DB中存储电子邮件和密码哈希.它还分配一个角色(比如说内容创建者)
登录.如果用户已注册并想要登录
我有一个非常简单的 spring-data-jpa + Hibernate 应用程序,它将客户数据存储在 MySql 数据库中(完整的源代码在此处发布)。
问题是它运行插入和选择查询的速度非常慢,与我通过 mysql CLI 所拥有的相比:
有讨论过类似的问题在这里,但在我的情况的测量方式更糟(尽管我不插入批次,它在DB只是一个简单的行)。有没有办法提高 Spring JPA/Hibernate 的性能?
另一个问题,有没有办法减少 spring-data-jpa 和 hibernate-entitymanager 的大小?我能够在不损害程序的情况下排除字节伙伴和 jandex 依赖项,但这只是几个 Mbs(阴影 jar 大小从 19.6Mb 减少到 16.6Mb)?
更新 根据请求,这里是代码(所有来源都在这里):
@Entity
@AttributeAccessor("field")
@Table(name = "customer")
public class Customer implements Serializable{
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
@Column(name="id",unique=true, nullable=false, insertable=true, updatable=true)
@Type(type="long")
private Long id;
@Column(name …Run Code Online (Sandbox Code Playgroud) 我使用 Spring 将@Profile与测试相关的类与开发和产品分开。我在寻找一种在 pom.xml 中设置spring.profiles.activeto的方法时遇到了麻烦,仅出于目标。换句话说,如果 Maven 目标是我想运行这个:testtesttest
mvn test
Run Code Online (Sandbox Code Playgroud)
仍然可以访问带有 @Profile("test") 注释的类,
而不是这样:
mvn test -Dspring.profiles.active=test
Run Code Online (Sandbox Code Playgroud)
因为它指定了运行两次的“测试”性质。
有可能吗?
更新:添加代码
以下两项服务用于测试和开发/生产。两者都实现相同的接口 MyService
MyService测试环境:
@Service
@Profile("test")
@ActiveProfiles("test")
public class TestMyServiceImpl implements MyService {
@Override
public String myMethod(){
...
}
}
Run Code Online (Sandbox Code Playgroud)
MyService 开发环境:
@Service
public class DevMyServiceImpl implements MyService {
@Override
public String myMethod(){
...
}
}
Run Code Online (Sandbox Code Playgroud)
自动装配 MyService 的控制器:
@RestController
@RequestMapping
public class MyController {
@Autowired
private MyService myService;
@RequestMapping(value = /myendpoint, method = …Run Code Online (Sandbox Code Playgroud)