

本文為英文版的機器翻譯版本，如內容有任何歧義或不一致之處，概以英文版為準。

# AWS CodeArtifact 身分驗證和字符
<a name="tokens-authentication"></a>

CodeArtifact 要求使用者向 服務進行身分驗證，以發佈或取用套件版本。您必須使用 AWS 憑證建立授權字符，以驗證 CodeArtifact 服務。若要建立授權字符，您必須擁有正確的許可。如需建立授權字符所需的許可，請參閱 中的 `GetAuthorizationToken`項目[AWS CodeArtifact 許可參考](auth-and-access-control-permissions-reference.md)。如需 CodeArtifact 許可的一般資訊，請參閱 [How AWS CodeArtifact 可與 IAM 搭配使用](security_iam_service-with-iam.md)。

若要從 CodeArtifact 擷取授權字符，您必須呼叫 [GetAuthorizationToken API](https://docs.aws.amazon.com/codeartifact/latest/APIReference/API_GetAuthorizationToken.html)。您可以使用 `login`或 `get-authorization-token`命令來 AWS CLI呼叫 `GetAuthorizationToken` 。

**注意**  
根使用者無法呼叫 `GetAuthorizationToken`。
+ `aws codeartifact login`：此命令可讓您輕鬆地設定常用套件管理員，以在單一步驟中使用 CodeArtifact。呼叫 會使用 `login` 擷取字符，`GetAuthorizationToken`並使用字符和正確的 CodeArtifact 儲存庫端點設定套件管理員。支援套件管理員如下：
  + dotnet
  + npm
  + nuget
  + pip
  + Swift
  + 雙身
+ `aws codeartifact get-authorization-token`：對於 不支援的套件管理員`login`，您可以`get-authorization-token`直接呼叫 ，然後視需要使用字符設定套件管理員，例如，將套件管理員新增至組態檔案或將其儲存為環境變數。

CodeArtifact 授權字符在預設的 12 小時內有效。權杖可以設定 15 分鐘到 12 小時的生命週期。當生命週期過期時，您必須擷取另一個字符。字符生命週期會在呼叫 `get-authorization-token` `login`或 之後開始。

如果在擔任角色時`get-authorization-token`呼叫 `login`或 ，您可以將 值設定為 `--duration-seconds` ，將字符的生命週期設定為等於角色工作階段持續時間的剩餘時間`0`。否則，字符生命週期與角色的最大工作階段持續時間無關。例如，假設您呼叫 `sts assume-role`並指定 15 分鐘的工作階段持續時間，然後呼叫 `login`來擷取 CodeArtifact 授權字符。在此情況下，即使超過 15 分鐘的工作階段持續時間，字符仍在整個 12 小時期間內有效。如需控制工作階段持續時間的資訊，請參閱《[IAM 使用者指南》中的使用 IAM 角色](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_use.html)。 **

## 使用 `login`命令建立的字符
<a name="auth-token-login"></a>

`aws codeartifact login` 命令會使用 擷取字符`GetAuthorizationToken`，並使用字符和正確的 CodeArtifact 儲存庫端點設定您的套件管理員。

下表說明 `login`命令的參數。


****  

<table>
<thead>
  <tr><th>參數</th><th>必要</th><th>描述</th></tr>
</thead>
<tbody>
  <tr><td>`--tool`</td><td>是</td><td>要驗證的套件管理員。可能的值為 `dotnet`、`npm`、`pip`、 `nuget``swift`和 `twine`。</td></tr>
  <tr><td>`--domain`</td><td>是</td><td>儲存庫所屬的網域名稱。</td></tr>
  <tr><td>`--domain-owner`</td><td>否</td><td>網域擁有者的 ID。如果存取您未驗證 AWS 之帳戶所擁有的網域，則需要此參數。如需詳細資訊，請參閱「[跨帳戶網域](domain-overview.md#domain-overview-cross-account)」。</td></tr>
  <tr><td>`--repository`</td><td>是</td><td>要驗證的儲存庫名稱。</td></tr>
  <tr><td>`--duration-seconds`</td><td>否</td><td>登入資訊有效的時間，以秒為單位。最小值為 900\*，最大值為 43200。</td></tr>
  <tr><td>`--namespace`</td><td>否</td><td>將命名空間與您的儲存庫工具建立關聯。</td></tr>
  <tr><td>`--dry-run`</td><td>否</td><td>僅列印將執行的命令，以將您的工具與儲存庫連線，而無需對組態進行任何變更。</td></tr>
  <tr><td colspan="3">\*在擔任角色`login`時呼叫 時，值 0 也有效。`login` 使用 呼叫 `--duration-seconds 0`會建立生命週期等於擔任角色之工作階段持續時間中剩餘時間的字符。</td></tr>
</tbody>
</table>


下列範例示範如何使用 `login`命令擷取授權字符。

```
aws codeartifact login \
    --tool {{dotnet | npm | nuget | pip | swift | twine}} \
    --domain {{my_domain}} \
    --domain-owner {{111122223333}} \
    --repository {{my_repo}}
```

如需如何搭配 npm 使用 `login`命令的特定指引，請參閱 [搭配 CodeArtifact 設定和使用 npm](npm-auth.md)。對於 Python，請參閱 [搭配 Python 使用 CodeArtifact](using-python.md)。

## 呼叫 `GetAuthorizationToken` API 所需的許可
<a name="get-auth-token-permissions"></a>

呼叫 CodeArtifact `GetAuthorizationToken` API 需要 `sts:GetServiceBearerToken`和 `codeartifact:GetAuthorizationToken`許可。

若要搭配 CodeArtifact 儲存庫使用套件管理員，您的 IAM 使用者或角色必須允許 `sts:GetServiceBearerToken`。雖然 `sts:GetServiceBearerToken`可以新增至 CodeArtifact 網域資源政策，但該許可在該政策中沒有作用。

## 使用 `GetAuthorizationToken` API 建立的字符
<a name="get-auth-token-api"></a>

您可以呼叫 `get-authorization-token` 從 CodeArtifact 擷取授權字符。

```
aws codeartifact get-authorization-token \
    --domain {{my_domain}} \
    --domain-owner {{111122223333}} \
    --query authorizationToken \
    --output text
```

您可以使用 `--duration-seconds`引數變更字符的有效時間長度。最小值為 900，最大值為 43200。下列範例會建立會持續 1 小時 (3600 秒） 的字符。

```
aws codeartifact get-authorization-token \
    --domain {{my_domain}} \
    --domain-owner {{111122223333}} \
    --query authorizationToken \
    --output text \
    --duration-seconds {{3600}}
```

如果在擔任角色`get-authorization-token`時呼叫 ，字符生命週期與角色的工作階段持續時間上限無關。您可以將 設定為 `--duration-seconds`0，將權杖設定為在擔任角色的工作階段持續時間過期時過期。

```
aws codeartifact get-authorization-token \
    --domain {{my_domain}} \
    --domain-owner {{111122223333}} \
    --query authorizationToken \
    --output text \
    --duration-seconds {{0}}
```

如需詳細資訊，請參閱下列文件：
+ 如需字符和環境變數的指引，請參閱 [使用 環境變數傳遞身分驗證字符](#env-var)。
+ 對於 Python 使用者，請參閱 [設定不含登入命令的 pip](python-configure-pip.md#python-configure-without-pip)或 [使用 CodeArtifact 設定和使用雙身](python-configure-twine.md)。
+ 對於 Maven 使用者，請參閱 [搭配 Gradle 使用 CodeArtifact](maven-gradle.md)或 [搭配 mvn 使用 CodeArtifact](maven-mvn.md)。
+ 如需 npm 使用者，請參閱 [不使用登入命令設定 npm](npm-auth.md#configuring-npm-without-using-the-login-command)。

## 使用 環境變數傳遞身分驗證字符
<a name="env-var"></a>

AWS CodeArtifact 使用 `GetAuthorizationToken` API 提供的授權字符來驗證和授權來自 Maven 和 Gradle 等建置工具的請求。如需這些身分驗證字符的詳細資訊，請參閱 [使用 `GetAuthorizationToken` API 建立的字符](#get-auth-token-api)。

您可以將這些身分驗證權杖存放在可由建置工具讀取的環境變數中，以取得從 CodeArtifact 儲存庫擷取套件或將套件發佈至其中所需的權杖。

基於安全考量，此方法偏好將字符存放在檔案，而該檔案可能由其他使用者或程序讀取，或意外簽入來源控制。

1. 如中所述設定您的 AWS 登入資料[安裝或升級 ，然後設定 AWS CLI](get-set-up-install-cli.md)。

1. 設定 `CODEARTIFACT_AUTH_TOKEN` 環境變數：
**注意**  
在某些情況下，您不需要包含 `--domain-owner`引數。如需詳細資訊，請參閱[跨帳戶網域](domain-overview.md#domain-overview-cross-account)。
   + macOS 或 Linux：

     ```
     export CODEARTIFACT_AUTH_TOKEN=`aws codeartifact get-authorization-token --domain {{my_domain}} --domain-owner {{111122223333}} --query authorizationToken --output text`
     ```
   + Windows （使用預設命令 shell)：

     ```
     for /f %i in ('aws codeartifact get-authorization-token --domain {{my_domain}} --domain-owner {{111122223333}} --query authorizationToken --output text') do set CODEARTIFACT_AUTH_TOKEN=%i
     ```
   + Windows PowerShell：

     ```
     $env:CODEARTIFACT_AUTH_TOKEN = aws codeartifact get-authorization-token --domain {{my_domain}} --domain-owner {{111122223333}} --query authorizationToken --output text
     ```

## 撤銷 CodeArtifact 授權字符
<a name="revoke-access"></a>

 當已驗證的使用者建立權杖來存取 CodeArtifact 資源時，該權杖會持續到其可自訂的存取期間結束為止。預設存取期間為 12 小時。在某些情況下，您可能想要在存取期間過期之前撤銷對權杖的存取。您可以依照這些指示撤銷 CodeArtifact 資源的存取權。

 如果您使用臨時安全登入資料建立存取權杖，例如*擔任的角色*或*聯合身分使用者存取*，您可以透過更新 IAM 政策來拒絕存取來撤銷存取。如需詳細資訊，請參閱《*IAM 使用者指南*》中的[停用暫時安全登入資料的許可](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_credentials_temp_control-access_disable-perms.html)。

 如果您使用長期 IAM 使用者登入資料來建立存取權杖，則必須修改使用者的政策以拒絕存取，或刪除 IAM 使用者。如需詳細資訊，請參閱[變更 IAM 使用者的許可](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_users_change-permissions.html)[或刪除 IAM 使用者](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_users_manage.html#id_users_deleting)。