Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/346.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何在服务之间安全地存储和传递第三方服务的密码?_Python_Microservices_Soa - Fatal编程技术网

Python 如何在服务之间安全地存储和传递第三方服务的密码?

Python 如何在服务之间安全地存储和传递第三方服务的密码?,python,microservices,soa,Python,Microservices,Soa,我们正在开发管理用户文档的应用程序。 我们正在实施一项新功能——处理用户的电子邮件 用户在设置选项卡中输入他的凭据(登录名、密码、iApprovider)。然后,我们将这些数据传递给我们的另一个服务,该服务负责检索电子邮件 问题 我们无法存储和传递普通密码 必须有一个机制,将加密密码的一面和解密的另一面。有什么办法可以实施吗?提前感谢。实现这一点有不同的方法,我建议您查找SHA-256或其他选择。应该有大量关于单向函数和加密的信息 您不必检查密码是否匹配,只需比较单向加密的输出即可 伪代码:

我们正在开发管理用户文档的应用程序。 我们正在实施一项新功能——处理用户的电子邮件

用户在
设置
选项卡中输入他的凭据(登录名、密码、iApprovider)。然后,我们将这些数据传递给我们的另一个服务,该服务负责检索电子邮件

问题

  • 我们无法存储和传递普通密码

必须有一个机制,将加密密码的一面和解密的另一面。有什么办法可以实施吗?提前感谢。

实现这一点有不同的方法,我建议您查找
SHA-256
或其他选择。应该有大量关于单向函数和加密的信息

您不必检查密码是否匹配,只需比较单向加密的输出即可

伪代码:

password_string = ‘some password‘
encrypted_pw = sha256(password_string)
[...]
if encrypted_pw == encrypted_pw_to_compare:
[...]

这比以原始格式存储和处理用户数据更安全。

实现这一点有不同的方法,我建议您查找
SHA-256
或其他方法。应该有大量关于单向函数和加密的信息

您不必检查密码是否匹配,只需比较单向加密的输出即可

伪代码:

password_string = ‘some password‘
encrypted_pw = sha256(password_string)
[...]
if encrypted_pw == encrypted_pw_to_compare:
[...]

这比以原始格式存储和处理用户数据更安全。

您可以使用电子邮件服务生成密钥对。电子邮件服务将是唯一知道私钥(用于解密)的服务,但将与其他服务共享公钥(用于加密)。电子邮件登录数据应该加密存储,最好不要存储在电子邮件服务上(如果电子邮件服务被破坏,用户的电子邮件登录数据也不会被加密)。使用公钥的加密甚至可以在前端使用javascript完成


但是请注意,强烈建议不要实现您自己的加密堆栈,因为有成千上万种方法会使其出错。除非您是密码学专家,否则请使用受信任的库

您可以使用电子邮件服务生成密钥对。电子邮件服务将是唯一知道私钥(用于解密)的服务,但将与其他服务共享公钥(用于加密)。电子邮件登录数据应该加密存储,最好不要存储在电子邮件服务上(如果电子邮件服务被破坏,用户的电子邮件登录数据也不会被加密)。使用公钥的加密甚至可以在前端使用javascript完成


但是请注意,强烈建议不要实现您自己的加密堆栈,因为有成千上万种方法会使其出错。除非您是密码学专家,否则请使用受信任的库

我不认为Grzegorzg的意思是“我们如何处理身份验证”。他的意思是我们如何存储他们其他帐户的用户凭据。我认为哈希不适用于此。我不认为Grzegorzg的意思是“我们如何处理身份验证”。他的意思是我们如何存储他们其他帐户的用户凭据。我认为散列不适用于此。您应该检查受支持的第三方服务是否有发布令牌的API,如OAuth2等。我不会要求用户提供密码,尤其是电子邮件,因为电子邮件被用作许多帐户的身份确认。另外,我不会把我的证书交给任何其他服务机构。那里有很多共享的秘密解决方案,我的建议是选择其中之一。Hashicorp的保险库似乎很受欢迎,但只要稍加搜索就会发现其中不少。@DillanWilding的问题是,可能有很多邮件服务…@Grzegorzg这里的每个人都说使用密码以外的东西(OAuth2、RSA等),因为没有“传递”密码安全性,它可以加密安全,还允许您将密码用于电子邮件服务的传统用户身份验证。如果您可以使用原始密码登录,则有人可以获得该密码。我最近没有检查电子邮件服务提供商的市场份额,但我打赌如果你实施2-3,你会得到大多数人的支持,更不用说如果你实施OAuth2或RSA for Gmail,任何人都可以免费创建帐户。你应该检查受支持的第三方服务是否有发布令牌的API,如OAuth2,等等。我不会要求用户提供密码,尤其是电子邮件,因为电子邮件被用作许多帐户的身份确认。另外,我不会把我的证书交给任何其他服务机构。那里有很多共享的秘密解决方案,我的建议是选择其中之一。Hashicorp的保险库似乎很受欢迎,但只要稍加搜索就会发现其中不少。@DillanWilding的问题是,可能有很多邮件服务…@Grzegorzg这里的每个人都说使用密码以外的东西(OAuth2、RSA等),因为没有“传递”密码安全性,它可以加密安全,还允许您将密码用于电子邮件服务的传统用户身份验证。如果您可以使用原始密码登录,则有人可以获得该密码。我最近没有检查过电子邮件服务提供商的市场份额,但我敢打赌,如果你实施2-3,你将获得大多数人的支持,更不用说如果你实施OAuth2或RSA for Gmail,任何人都可以免费注册。