可以共享您在https://trello.com/1/appKey/generate生成的Trello开发人员API密钥吗?有关详细信息,请参阅文档.我认为这个密钥在您发布的任何应用程序中都可见,但我宁愿提出一个愚蠢的问题,而不是犯下愚蠢的错误.
我想创建一个安全的REST API
例如,如果我看到谷歌API,则基于域生成API KEY.
从这里我有两个问题:
首先,使用单向散列是真/右吗?如果是,如果有人知道散列方法和域,那么他可以生成api密钥并使用它.以及我可以使用的哈希方法/功能?
第二个是,如果客户端如何制作桌面应用程序,他如何生成从桌面访问的API KEY,现在是一个拥有域URL的网站.我的意思是,他们可以生成api密钥,因为没有网址.
有什么好方法吗?,如何创建安全的api以及如何创建api密钥?
顺便说一句,我正在使用PHP
就我而言,我正在使用Dropbox API.目前我正在将密钥和密钥存储在JSON文件中,这样我就可以将其保存在Github存储库之外,但是从安全的角度来看,这并不比在代码中使用它更好.之前有很多关于保护/混淆Python的问题(通常是出于商业原因),答案总是"不要,Python不是那个意思."
因此,我不是在寻找一种保护代码的方法,而只是一种解决方案,可以让我分发我的应用程序而不会泄露我的API细节.
我有一个Web服务,我正在向用户提供进入我的应用程序数据库并获取一些信息.用户必须注册API密钥并在提出请求时提供.一切正常,但我如何检查注册密钥的用户是否实际提出请求而不是他可能已经提供密钥的其他人?
在过去的两天里,我一直在考虑提出一个解决方案,但到目前为止还没有.
我正在尝试使用令牌身份验证创建一个api.我的问题是我不希望令牌与用户帐户相关联,而是与帐户模型相关联.
例如:
class Account(models.Model):
slug = models.SlugField()
name = models.CharField(max_length=255)
website = models.URLField(blank=True, default='')
members = models.ManyToManyField(User, through='AccountMember')
class AccountMember(models.Model):
ADMIN = 1
MANAGER = 2
MEMBER = 3
ROLES = (
(ADMIN, 'administrator'),
(MANAGER, 'manager'),
(MEMBER, 'member'),
)
user = models.ForeignKey(User)
account = models.ForeignKey(Account)
role = models.PositiveSmallIntegerField(choices=ROLES)
date_joined = models.DateField(auto_now_add=True)
class Token(models.Model):
"""
The default authorization token model.
"""
key = models.CharField(max_length=40, primary_key=True)
account = models.ForeignKey(Account, related_name='auth_tokens')
only_allowed_ips = models.BooleanField(default=False)
ip_list = models.TextField(default='', blank=True)
created = models.DateTimeField(auto_now_add=True)
Run Code Online (Sandbox Code Playgroud)
如您所见,有多个用户与一个帐户关联,因此将令牌分配给他们将是无用的.
我还希望能够为帐户添加多个令牌. …
authentication django permissions api-key django-rest-framework
我已在PHP应用程序中正确实现了Google API客户端.我能够连接到我想要的服务.
但现在我想检查用户输入的API密钥是否有效.
我查看了Google_Client()类公开的方法,但我认为我不确定如何检查.
下面是我的类中创建客户端的方法:
private function client( $api_key ) {
$client = new \Google_Client();
$client->setClassConfig( 'Google_Cache_File', 'directory', $this->cache_dir );
$client->setDeveloperKey( $api_key );
$client->setApplicationName( $this->name );
$client->setScopes( array( \Google_Service_Calendar::CALENDAR_READONLY ) );
$client->setAccessType( 'online' );
return $client;
}
Run Code Online (Sandbox Code Playgroud)
我想制作另一种方法来判断使用的API密钥是否有效......
public function validate_api_key( $api_key ) {
$client = $this->client( $api_key );
// What should I use here to check if $api_key is valid?
if ( $client ) {
return true;
}
return 'error';
}
Run Code Online (Sandbox Code Playgroud)
或者我应该连接到服务,然后检查我是否有读取访问权限?但我相信有一种更简单,更好的方法可以做到这一点......
我有一堆API密钥和秘密(Stripe,Cloudinary等),目前在我的应用程序中进行了硬编码.存放它们的正确位置在哪里?它们应该在服务器中吗?我只是将服务器URL存储在我的最后(如果密钥更改,应用程序将继续工作)?
例如,我在我的app委托文件中有这个:
func configureStripe(){
STPPaymentConfiguration.sharedConfiguration().publishableKey = "pk_test_1234rtyhudjjfjjs"
STPPaymentConfiguration.sharedConfiguration().appleMerchantIdentifier = "merchant.com.myapp"
}
Run Code Online (Sandbox Code Playgroud) 我正在构建一个使用 API 令牌和密钥来访问服务的系统,但存储它们的最佳位置在哪里?我想在不推送令牌的情况下将代码推送到 GitHub。
目前,我将它们放在一个名为的空白文件中Constants.py,并在主 python 文件中导入Constants.py.
API_KEY_SERVICE = "ABC123ABC"
主要.py:
import Constants
service_key = Constants.API_KEY_SENDGRID
Run Code Online (Sandbox Code Playgroud) 我不确定这是否是问这个问题的正确地方,但我正在尝试将 Quizlet API 用于我拥有的个人项目,但我似乎无法找到访问 Quizlet API 的位置。Quizlet 上似乎有几页关于其 API 的页面,但现在所有页面都消失了,并显示“您正在寻找的页面不再可用错误”。
我只是想知道是否有人知道我如何获得 API 密钥(我对使用 API 还比较陌生)。
在 AWS API Gateway 中,
- 我们可以设置一个资源来请求 API Key 进行访问。
- 我们还可以设置另一个需要授权的资源(例如 JWT 令牌,通过 lambda 函数或 AWS Cognito 处理)。
问题:我们可以将资源配置为在上述两种情况中的任何一种情况下都可以访问吗?目前,如果我们同时启用“API Key Required”和“Authorization”,则请求同时需要 API Key 和 Authorization。我们希望它通过两者中的一个。
破解/解决方法:创建相同资源的两个副本,并分别授权每个副本,一个使用 API 密钥,另一个使用授权方。
api-key ×10
api ×4
php ×2
python ×2
ajax ×1
api-gateway ×1
bearer-token ×1
client ×1
django ×1
dropbox-api ×1
google-api ×1
ios ×1
permissions ×1
rest ×1
swift ×1
swift2 ×1
trello ×1
web-services ×1