标签: api-key

HTTP 基本身份验证与密钥

在构建了一个相当简单的 API 后,我开始研究身份验证,其中仅使用用户名/密码组合的基于 SSL 的基本 HTTP 身份验证对于使用它的人来说可能显得很弱,尽管这里的各种讨论表明它应该没问题。

在这种情况下,我从类似的解决方案中研究了 API,这些解决方案为用户提供了用户 ID 和 API 密钥。问题是我根本不明白这有多强。我认为密钥仍然像密码一样保存,从我的角度来看,他们只是将密码称为密钥。

例子:

https://github.com/Arie/serveme/blob/master/spec/fixtures/vcr/HiperzServer/_restart/visits_the_Hiperz_restart_URL.yml

&api_key=hiperz_api_key&gs_id=3873除了用户名密码之外,args如何提供进一步的安全性?我肯定想实现一些比基本 HTTP 身份验证上的用户/传递更强大的东西,并为最终用户提供某种类型的令牌/密钥用于访问,但我没有看到这种方法的额外优势。

php authentication http-authentication basic-authentication api-key

5
推荐指数
1
解决办法
6688
查看次数

How to use an .ENV file with a website

I've made a few node.js bots and web applications that have used .env variables along with the dotenv package to hold all of the API keys.

However, Im currently working on a website that uses node.js with browserify and this method doesn't seem to work. Whenever I try to output the value to the console or use the value in the code it returns undefined.

我该如何解决这个问题,或者如果 .env 根本无法在网络上工作,我将如何隐藏这些值?

我的 .env 示例

ID = B1CRL2WDIW2553
SECRET = 41445d2b99b33ede3ebce0421900b8e9
Run Code Online (Sandbox Code Playgroud)

我的例子

const dotEnv …
Run Code Online (Sandbox Code Playgroud)

javascript environment-variables api-key node.js browserify

5
推荐指数
1
解决办法
3648
查看次数

我是否应该在使用 Retrofit 执行的每个请求中传递我的 APIKEY?

我想知道将 APIKEY 放入所有 REST 请求中的最佳方法,而不必将其添加到请求的参数中。

目前我只接到了几个电话,但我正在尝试进一步了解。

@GET(".")
fun getSearch(@Query("s") text: String, @Query("apikey") APIKEY: String) : Observable<ResponseSearch>
Run Code Online (Sandbox Code Playgroud)

我想知道是否有办法不在每次调用的变量中包含 APIKEY

api-key retrofit2 rx-java2

5
推荐指数
1
解决办法
2807
查看次数

Android Here Maps以编程方式设置api键

我正在使用 Here maps Premium SDK 3.15,在文档中,它说要在 android 清单文件中设置 id、令牌和许可证。我在 build.gradle 中将 id、token 和 license 设置为清单占位符,并像下面一样放入 Android.manifest。

    <!-- Here Maps -->
    <meta-data android:name="com.here.android.maps.appid"
        android:value="${here_map_app_id}"/>
    <meta-data android:name="com.here.android.maps.apptoken"
        android:value="${here_map_app_code}"/>
    <meta-data android:name="com.here.android.maps.license.key"
        android:value="${here_map_licence_key}"/>
Run Code Online (Sandbox Code Playgroud)

我的项目遇到了静态代码分析,其中一项发现是“应用程序代码中存在硬编码的秘密令牌”。这意味着我将此处的地图凭据保留在 build.gradle 中,这不行。

我的问题是我应该在哪里保存这些凭据,有没有办法设置 Here 以编程方式而不是 Android 映射 SDK。清单(以防万一,我不保留在项目中并从后端检索)

android api-key heremaps heremaps-android-sdk

5
推荐指数
1
解决办法
465
查看次数

如何在 Android 上安全地使用 Google Map API 密钥?

为了不暴露我的 Google 地图 API 密钥,最好不要将 API 密钥包含在 Android 应用程序存储库本身中。如果应用程序中没有 API 密钥,我该如何使用 Google 地图?将 API 密钥存储在服务器中是可行的方法,那么我是否可以在应用程序 init 上进行网络调用并请求 API 密钥?从服务器获取响应后,将 API 密钥存储在共享首选项中?这是我能想到的唯一方法,但如果它存储在共享首选项中,我相信可以通过逆向工程读取共享首选项中的值来获取 API 密钥。谁能告诉我使用 API 密钥的安全方法是什么,谢谢。

android api-key google-maps-android-api-2

5
推荐指数
1
解决办法
5373
查看次数

IdentityServer4使用ApiKey或Basic身份验证直接到API

我正在使用 IdentityServer4 让我的客户通过 JavaScript 登录并访问网页和 api,并且运行良好。然而,有一个新的要求,而不是使用用户名和密码从身份服务器获取访问令牌,然后使用它通过承载身份验证访问 api...我需要使用“Basic”直接调用 api身份验证标头和 api 将与身份服务器确认身份。类似于下面用于访问 ZenDesk api 的代码...

\n
        using (var client = new HttpClient())\n        {\n            var username = _configuration["ZenDesk:username"];\n            var password = _configuration["ZenDesk:password"];\n            var token = Convert.ToBase64String(Encoding.ASCII.GetBytes(username + ":" + password));\n            client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Basic", token);\n\n            var response = client.PostAsync("https://...\n
Run Code Online (Sandbox Code Playgroud)\n

对我如何实施这个有任何帮助吗?IdentityServer4 中是否内置了任何可以适应这种方法的东西?我将 .Net Core 3.1 用于 api 服务器和身份服务器。

\n

另一种(看似常见)方法是为每个用户生成一个 api 密钥,然后允许用户像这样调用 api...

\n
using (var client = new HttpClient())\n{\n    client.BaseAddress = new Uri(URL_HOST_API);\n    client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("ApiKey", "123456456123456789");\n\xe2\x80\xa6\n}\n
Run Code Online (Sandbox Code Playgroud)\n

想法?

\n

c# basic-authentication api-key identityserver4

5
推荐指数
1
解决办法
4650
查看次数

API 密钥和 OAuth 的客户端凭据流之间的安全区别是什么?

考虑一个客户端直接访问(机器到机器)并且不需要特定于用户的身份验证的 API。我理解它的方式是client_credentials,客户端必须存储 aclient_id并且client_secret它用来获取和刷新令牌。使用 API 密钥,客户端只需存储密钥。在这种情况下,是什么让 OAuth 更安​​全?在我看来,如果 API 密钥永远不会被泄露,那么攻击者就无法伪装成预期的客户端。如果 API 密钥被泄露,它实际上与破坏client_idand相同client_secret,攻击者可以使用 and 获取令牌并访问 API 中的数据,冒充客户端。

编辑:澄清这是一个机器对机器的调用

security api oauth api-key

5
推荐指数
3
解决办法
1178
查看次数

访问 React 应用程序目录之外的 .env 变量

我的项目结构是:

\n
.\n\xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 backend\n\xe2\x94\x82\xc2\xa0\xc2\xa0 \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 node_modules\n\xe2\x94\x82\xc2\xa0\xc2\xa0 \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 package.json\n\xe2\x94\x82\xc2\xa0\xc2\xa0 \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 routes\n\xe2\x94\x82\xc2\xa0\xc2\xa0 \xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 server.js\n\xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 frontend\n\xe2\x94\x82\xc2\xa0\xc2\xa0 \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 node_modules\n\xe2\x94\x82\xc2\xa0\xc2\xa0 \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 package.json\n\xe2\x94\x82\xc2\xa0\xc2\xa0 \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 public\n\xe2\x94\x82\xc2\xa0\xc2\xa0 \xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 src\n\xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 node_modules\n\xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 package.json\n\xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 .env\n\n
Run Code Online (Sandbox Code Playgroud)\n

哪里frontend是 React 应用程序,哪里backend是 Express 应用程序。我有一个环境变量API_KEY=....env需要在前端应用程序的后端使用。

\n
    \n
  • 在 Express 后端应用程序中,我可以轻松地使用它而process.env.API_KEY不会出现问题,即使它位于后端应用程序文件夹之外。

    \n
  • \n
  • 但是,我还需要从 React 前端应用程序访问该密钥,undefined当我使用process.env.API_KEY. 从 React 文档来看,对于 React 应用程序,你需要:

    \n
      \n
    1. 为变量命名REACT_APP_API_KEY
    2. \n
    3. 确保它位于 React 应用程序目录内。
    4. \n
    \n

    所以,是的,我可以.env在 React 应用程序中创建另一个文件并按照这些说明进行操作,但我觉得它添加了不必要的重复代码:

    \n
      \n
    1. 我有两个.env文件,这似乎有点令人困惑。
    2. \n …

environment-variables api-key secret-key reactjs mern

5
推荐指数
1
解决办法
3205
查看次数

如何在 GitHub 公共存储库中隐藏 API 密钥?

我正在做一个简单的前端项目,我(或用户)在其中对 openweathermap api 进行 API 调用,获取天气信息并将其显示在网站上。

简单的 HTML、CSS 和 vanilla JS

所以我想保持 repo 公开并使用 GitHub Pages 托管站点......但我的 js 文件包含运行时所需的 API 密钥。

额外信息:

(所有这些都是我搜索时发现的)

我知道有一种方法可以将 API 密钥保存在 GitHub 机密中,然后在 yml 文件中将其作为 GitHub Actions 中的环境变量引用。但是如何在运行时为访问我网站的任何用户将该秘密放入 js 代码中?

api-key github-pages openweathermap github-actions

5
推荐指数
1
解决办法
597
查看次数

如何使用 API 密钥访问 gradle 中的 artifactory 上的 Maven 存储库?

我们有一个 JFrog 工件,其中包含 Maven 存储库(和其他元素)。

在我的 gradle 设置中,我定义了:

repositories {
    maven {
        url = uri("https://eu.artifactory....../whatever/")    
        credentials {
            username = "my-full-user-id"
            password = "my-real-password"
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

工作正常。当我更改密码条目以使用我的 JFrog API KEY时,它有效。

但是:使用 api 密钥仅在username包含我的真实用户 ID 时才有效。

然而:当“直接”向 JFrog 发出 https 请求时(例如使用 python 脚本),不需要提供用户名:只需在请求标头中包含 API KEY 就足够了。

事实是:在我们的设置中,我们手头有 API 密钥,但没有用户 ID。所以我希望能够在 gradle 中定义一个无需用户名即可工作的 Maven 依赖项。

但当

  • 我在 gradle 设置中将用户名留空,gradle 抱怨它为空。
  • 我尝试了除了我的真实用户 ID 之外的其他任何操作,我得到了401 Unauthorized响应

问题:是否可以在 gradle 中使用“maven 风格”存储库定义,该定义与 API KEYS 一起使用并且不需要相应的用户 ID?

api-key artifactory gradle maven

5
推荐指数
1
解决办法
4471
查看次数