

# 授权 Web 应用程序将数据发送到 AWS
<a name="CloudWatch-RUM-get-started-authorization"></a>

您有四种方式来设置数据验证：
+ 使用 Amazon Cognito 并让 CloudWatch RUM 为应用程序创建新的 Amazon Cognito 身份池。这是最简单的设置方法。

  身份池将包含未经验证的身份。这允许 CloudWatch RUM Web 客户端将数据发送到 CloudWatch RUM，而无需对应用程序的用户进行身份验证。

  Amazon Cognito 身份池具有附加的 IAM 角色。Amazon Cognito 未经验证的身份允许 Web 客户端担任 IAM 角色，此角色已获得授权，可向 CloudWatch RUM 发送数据。
+ 使用 Amazon Cognito 进行身份验证。如果您使用此方式，则可以使用现有的 Amazon Cognito 身份池，或者创建一个新的身份池以用于此应用程序监测仪。如果您使用现有身份池，还必须修改附加到身份池的 IAM 角色。对于支持未经身份验证用户的身份池，请使用此选项。您只能使用同一区域中的身份池。
+ 使用已设置的现有身份提供商的身份验证。在这种情况下，您必须从身份提供商处获取凭证，并且应用程序必须将这些凭证转发到 RUM Web 客户端。

  对于仅支持经身份验证用户的身份池，请使用此选项。
+ 使用基于资源的策略来管理对应用程序监测仪的访问。这包括无需 AWS 凭证即可向 CloudWatch RUM 发送未经身份验证的请求。要了解基于资源的策略和 RUM 的更多信息，请参阅[将基于资源的策略与 CloudWatch RUM 结合使用](CloudWatch-RUM-resource-policies.md)。

以下各节包含了这些选项的更多详细信息。

## 使用现有的 Amazon Cognito 身份池
<a name="CloudWatch-RUM-get-started-authorization-existingcognito"></a>

如果您选择使用 Amazon Cognito 身份池，则需要在将应用程序添加到 CloudWatch RUM 时指定身份池。身份池必须支持访问未经验证的身份。您只能使用同一区域中的身份池。

您还必须将以下权限添加到已附加到与此身份池关联的 IAM 角色的 IAM 策略。

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        { 
            "Effect": "Allow",
            "Action": [
                "rum:PutRumEvents"
            ],
            "Resource": "arn:aws:rum:us-east-1:123456789012:appmonitor/app monitor name" 
        }
    ]
}
```

------

Amazon Cognito 会发送必要的安全令牌，以确保应用程序能够访问 CloudWatch RUM。

## 第三方提供商
<a name="CloudWatch-RUM-get-started-authorization-thirdparty"></a>

如果您选择使用第三方提供商的私有身份验证，则必须从身份提供商处获取凭证并将其转发到 AWS。执行此操作的最佳方法是使用*安全令牌供应商*。您可以使用任意安全令牌供应商，包括使用 AWS Security Token Service 的 Amazon Cognito。有关 AWS STS 的更多信息，请参阅[欢迎使用 AWS Security Token Service API 参考](https://docs.aws.amazon.com/STS/latest/APIReference/welcome.html)。

如果您想在这种情况下使用 Amazon Cognito 作为令牌供应商，则可以配置 Amazon Cognito，以与身份验证提供商结合使用。有关更多信息，请参阅 [Amazon Cognito 身份池入门（联合身份）](https://docs.aws.amazon.com/cognito/latest/developerguide/getting-started-with-identity-pools.html)。

配置 Amazon Cognito 以与身份提供商结合使用后，还需要执行以下操作：
+ 创建具有以下权限的 IAM 角色。应用程序将使用该角色访问 AWS。

------
#### [ JSON ]

****  

  ```
  { 
   "Version":"2012-10-17",		 	 	 
   "Statement": [ 
     { 
       "Effect": "Allow",
       "Action": "rum:PutRumEvents",
       "Resource": "arn:aws:rum:us-east-2:123456789012:appmonitor/AppMonitorName"
     }
   ]
  }
  ```

------
+ 将以下内容添加到应用程序中，让应用程序将提供商的凭证传递给 CloudWatch RUM。插入该行，以便在用户登录到应用程序并且应用程序收到用于访问 AWS 的凭证后运行。

  ```
  cwr('setAwsCredentials', {/* Credentials or CredentialProvider */});
  ```

有关 AWS JavaScript SDK 凭证提供商的更多信息，请参阅 SDK for JavaScript v3 开发者指南中的[在 Web 浏览器中设置凭证](https://docs.aws.amazon.com/sdk-for-javascript/v3/developer-guide/setting-credentials-browser.html)、SDK for JavaScript v2 开发人员指南中的[在 Web 浏览器中设置凭证](https://docs.aws.amazon.com/sdk-for-javascript/v2/developer-guide/setting-credentials-browser.html)以及 [@aws-sdk/凭证提供商](https://www.npmjs.com/package/@aws-sdk/credential-providers)。

您还可以使用适用于 CloudWatch RUM Web 客户端的软件开发工具包来配置 Web 客户端身份验证方法。有关 Web 客户端软件开发工具包的更多信息，请参阅 [CloudWatch RUM Web 客户端软件开发工具包](https://github.com/aws-observability/aws-rum-web)。