如何从 AWS AppStream 中获取当前用户?

How do I get the current user from within an AWS AppStream?

我正在通过 AWS AppStream 制作应用程序部署的原型。通过网络门户(使用 SAML)管理对流的访问。我的应用程序需要知道用户的身份。我可以提示他们,但我不想让他们同时登录门户和应用程序。我想获得他们在门户网站上提供的凭据。 (AppStream 实例 运行 在 "PhotonUser" 帐户下,所以我无法从 OS 获取用户名。)

AWS SDK 有一个 Session class,其中包含用户 ID,但我找不到为当前流会话获取它的实例的方法。

让门户将标识用户的令牌作为 session context. The token can be anything you want (subject to an unenforced 1024 byte limit) 传递到 AppStream,但可能应该包括一个时间戳,以便它可以过期和一个签名,以确保它没有被伪造或篡改与.

修改您的门户以通过 CreateStreamingURL API 为每个用户创建自定义 URL 以提供令牌作为会话上下文。 AppStream 中的应用程序将看到会话上下文的命令行参数。解析并验证令牌(即检查其是否过期并验证签名)。

AppStream_UserName 在每个会话中设置环境变量。

因此您的门户网站应该获取他们的电子邮件地址并将其与 CreateStreamingURLRequest(加上堆栈、队列等)一起使用。门户现在应将其浏览器会话重定向到此 URL.

在那个 运行 实例中 AppStream_UserName 将是他们的电子邮件地址。