代理身份验证#
英格兰vs伊朗让球RStudio卡塔尔世界杯欧洲预选赛赛程表 Connect支持代理身份验证。这允许外部系统拦截请求并处理访问RStudio Connect仪表板的用户的身份验证,或它承载的应用程序。英格兰vs伊朗让球
配置示例#
请注意
的ProxyAuth配置附录包含了关于每个ProxyAuth配置选项的信息。
(认证)提供者=“代理”(服务器)地址=“https://example.com/apps/英格兰vs伊朗让球rstudio-connect”(ProxyAuth)LoginURL=“https://example.com/auth/login”LogoutURL=“https://example.com/auth/logout”;此配置只需要代理发送;默认标题“X-Auth-Username”和有效的;用于身份验证的用户名。更多的头;可以通过代理发送,以补充用户配置文件。;根据需要取消以下注释:; UniqueIdHeader =“X-Auth-ID”; UsernameHeader =“X-Auth-Custom-Username”; FirstNameHeader =“X-Auth-First-Name”; LastNameHeader =“X-Auth-Last-Name”; EmailHeader =“X-Auth-Email”; RoleHeader =“X-Auth-RSC-Role”; GroupsHeader =“X-Auth-Groups”;如果使用组,启用此功能可获得更好的用户体验,;除非需要管理大量的组:; GroupsAutoProvision = true;当试图排除与代理身份验证相关的问题时,;您可以通过启用以下行来启用更详细的日志记录;日志= true
这是如何工作的#
服务(例如NGINX)作为您的自定义身份验证服务器运行。它负责拦截对RStudio Connect的所有请求,并执行所需的身份验证和授权。英格兰vs伊朗让球在请求被代理到RStudio Connect之前,来自经过身份验证的用户的请求将添加自定义HTTP头。英格兰vs伊朗让球HTTP头将包含该访问者的用户名和其他标识信息。英格兰vs伊朗让球RStudio Connect将从HTTP报头中获取值,并将流量作为报头中指定的用户处理。
我们无法验证此HTTP头是由您的身份验证服务器添加的,而不是由用户直接添加的。从安全的角度来看,对RStudio Connect服务器的网络访问必须受到防火墙或其他网络限制的适当限制,这一点非常重要。英格兰vs伊朗让球对RStudio Conne英格兰vs伊朗让球ct的所有访问都必须通过您的身份验证服务器进行代理。
重要的
标识用户的HTTP报头不应该由请求者设置。在所有情况下,在对用户进行身份验证并添加消息头本身之前,您的身份验证服务器应该删除该消息头(如果它存在)。英格兰vs伊朗让球如果提供了重复的身份验证头,RStudio Connect将返回通用身份验证失败。
从RStudio IDE部署英格兰vs伊朗让球#
从RStudio IDE进行部署是一种英格兰vs伊朗让球独特的情况。IDE使用R包rsconnect
从RStudio Connect获取部署凭据。英格兰vs伊朗让球这些凭据用于签署部署请求。的最低要求版本rsconnect
支持代理身卡塔尔世界杯欧洲预选赛赛程表份验证的是0.8.7
.
部署请求使用在较早的经过身份验证的会话中获得的凭据进行签名,并且应该通过您的代理而不进行更改。
的X-Auth-Token
头标识部署请求。当X-Auth-Token
如果存在消息头,则应该允许请求通过您的代理,而无需尝试对用户进行身份验证。此外,以下三个头在部署过程中使用,不应由代理编辑或删除。
X-Auth-Token
X-Auth-Signature
X-Content-Checksum
提示
另外,指定一个登录网址可以简化您的代理配置,并使从RStudio IDE部署更容易。英格兰vs伊朗让球通过使用这个选项,RStudio Conne英格兰vs伊朗让球ct本身将确定身份验证的需要,而不需要代理拦截上面列出的头。
使用RStudio 英格兰vs伊朗让球Connect Server API#
的授权
在以下情况下,头应该允许流量通过代理而不尝试验证用户:
- 正在使用英格兰vs伊朗让球RStudio Connect Server API。
- 英格兰vs伊朗让球RStudio Connect提供托管api(如Plumber、FastAPI)
请注意
寻找一个包含关键
的更具体匹配的API键授权
RStudio Connect英格兰vs伊朗让球使用的头文件。
提示
另外,指定一个登录网址可以简化您的代理配置,并使使用RStudio Connect Server API更容易。英格兰vs伊朗让球通过使用此选项,RStudio Connec英格兰vs伊朗让球t本身将确定身份验证的需要,而不需要代理拦截授权
头。
基本配置#
若要配置RStudio C英格兰vs伊朗让球onnect使用代理身份验证,请设置身份验证。提供者
来代理
.
;/etc/英格兰vs伊朗让球rstudio-connect / rstudio-connect.gcfg(认证)提供者=“代理”
代理身份验证要求您设置服务器。地址
指向您的代理服务器。如果没有配置服务器。地址
,浏览器可能不会将所有请求都通过您的身份验证代理路由。看到编辑配置文件有关服务器。地址
.
;/etc/英格兰vs伊朗让球rstudio-connect / rstudio-connect.gcfg(服务器)地址=“https://myproxy.company.com/”
您可以自定义身份验证服务器在成功进行身份验证时将发送的头的名称。缺省情况下,该密钥名称为X-Auth-Username
.
;/etc/英格兰vs伊朗让球rstudio-connect / rstudio-connect.gcfg(ProxyAuth)UsernameHeader=“X-Auth-Username”
英格兰vs伊朗让球RStudio Connect还可以配置为通过附加的头文件从代理接收更完整的用户概要信息。
;/etc/英格兰vs伊朗让球rstudio-connect / rstudio-connect.gcfg(ProxyAuth)UsernameHeader=“X-Auth-Username”FirstNameHeader=“X-Auth-First-Name”LastNameHeader=“X-Auth-Last-Name”EmailHeader=“X-Auth-Email”
定义用户配置文件字段可编辑的标题效果。请参见下面的更多
指定登录和注销url#
登录网址#
在大多数情况下,除非用户拥有有效的会话,否则身份验证和代理将不允许用户访问RStudio Connect。英格兰vs伊朗让球然而,在某些情况下,您可能希望允许用户访问某些内容而不进行身份验证;允许RStudio英格兰vs伊朗让球 Connect控制何时需要登录。
如果您的代理有一个已知的端点,用户应该访问它来打开会话,那么您可以使用配置选项在RStudio Connect中配置端点URL英格兰vs伊朗让球ProxyAuth。LoginURL
.
;/etc/英格兰vs伊朗让球rstudio-connect / rstudio-connect.gcfg(ProxyAuth)LoginURL=“https://proxy/login”
注意到这一点很重要英格兰vs伊朗让球RStudio Connect将按原样接收这个URL它会重定向当用户点击仪表板上的“登录”链接时,就可以访问它。
代理应考虑推荐人
在此重定向期间。它可能包含用户在RStudio Connect中最初访问的URL,代理可能希望在身份验证后将用户引用回此位置。英格兰vs伊朗让球
请注意
“登出”在仪表板是可见的ProxyAuth。LoginURL
定义。这种行为被认为是一种方便,注销行为只会将用户带回配置的登录URL。由代理来决定该操作是否能够使会话失效。
注销URL#
由于身份验证由代理控制,所以RStudio Connect无法在代理上完成用户会话,必须在RStu英格兰vs伊朗让球dio Connect之外执行步骤才能关闭会话。
如果您的代理有一个已知的端点,用户应该访问它来关闭会话,那么您可以在RStudio Connect中使用配置选项配置端点URL英格兰vs伊朗让球ProxyAuth。LogoutURL
.
;/etc/英格兰vs伊朗让球rstudio-connect / rstudio-connect.gcfg(ProxyAuth)LogoutURL=“https://proxy/logout”
注意到这一点很重要英格兰vs伊朗让球RStudio Connect将按原样接收这个URL并把它放在它的仪表板上的“注销”链接中。单击该链接将把浏览器直接带到配置的注销URL。它不会是一个重定向。
请注意
不会提供关于当前登录用户的信息,代理必须能够根据上下文(例如,cookie)确定这一点。
用户配置#
当用户第一次成功登录时,将在RStudio英格兰vs伊朗让球 Connect中创建用户。通过通过RStudio Connect Server API将用户添加为用户,还可以在首次登录之前创建用户。英格兰vs伊朗让球
请注意
通过API创建的用户必须完全匹配预期通过身份验证代理接收的标识符。默认情况下,这个标识符是用户名,但也可以使用一个单独的唯一标识符。参见下面有关的部分惟一的ID.
身份验证完全发生在放置在RStudio Connect前面的代理中,它期望从前者接收一个HTTP头,其中包含经过身份验证的远程用户帐户的英格兰vs伊朗让球标识符。
首次登录时进行注册#
默认情况下,当用户第一次成功登录时,可以在RStudio Connect英格兰vs伊朗让球中创建用户。控件中指定的角色将创建帐户授权。DefaultUserRole
设置(见用户角色)或通过用户角色映射如果配置。否则,角色可以指定为通过RStudio Connect Server API创建的用户。英格兰vs伊朗让球
禁止首次登录时注册#
如果您希望禁用此功能,请设置配置设置ProxyAuth。RegisterOnFirstLogin
来假
.
;/etc/英格兰vs伊朗让球rstudio-connect / rstudio-connect.gcfg(ProxyAuth)RegisterOnFirstLogin=假
重要的
使用此选项需要通过RStudio Connect Server API专门创建用户。英格兰vs伊朗让球
用户名#
代理身份验证中的用户名可能是唯一的,也可能不是唯一的,这取决于配置。这种灵活性的存在是为了适应可能驱动代理身份验证的各种身份验证机制。
英格兰vs伊朗让球RStudio Connect对它支持的用户名施加了一些额外的限制:卡塔尔世界杯欧洲预选赛赛程表
- 禁止使用以下值:
连接
,应用程序
,用户
,组
,向setpassword
,user-completion
,确认
,最近
,报告
,情节
,未发表的
,设置
,指标
,令牌
,帮助
,登录
,欢迎
,注册
,resetpassword
,内容
警告
默认情况下,用户名是唯一且不可变的用户标识。因此,对用户名的更改将导致在RStudio Connect中创建新用户。英格兰vs伊朗让球
提示
如果您希望能够随时更新用户名,同时为每个用户维护单个帐户,则必须通过代理标头提供不同形式的惟一用户标识。看到惟一的ID在下面。
惟一的ID#
设置ProxyAuth。UniqueIdHeader
确定哪个报头保存用户标识。重要的是,通过代理发送的用户标识是:
唯一:不同的用户不具有相同的身份是非常重要的。
持久性:理想情况下,这个身份不能附加到用户名、电子邮件或姓名上,因为这些可能会随时间变化。如果您的身份验证系统提供了基于UUID/GUID的值,那么它们是一个很好的选项。
当以这种方式配置时,代理提供的用户名不需要是唯一的。
请注意
当发布到英格兰vs伊朗让球同一个RStudio Connect主卡塔尔世界杯欧洲预选赛赛程表机时,RStudio Studio IDE不支持重复的用户名。但是,具有相同用户名的两个用户不太可能共享相同的IDE帐户或工作站。
请注意
ProxyAuth。UniqueIdHeader
还允许RStudio Connec英格兰vs伊朗让球t Server API接受该字段unique_id
用于创建新用户。这个值必须匹配代理通过报头发送的值。在Connect内部,UniqueID被编码为Base64值存储。一旦创建了用户,RStudio Connect标识(英格兰vs伊朗让球guid
)应该用于该用户的后续API操作。
重要的
现有客户愿意启用ProxyAuth。UniqueIdHeader
必须在配置设置之前,首先将所有用户更新为新的身份。的usermanager
CLI工具可以帮助进行这种迁移。看到用户管理CLI附录。
生成的用户名#
当ProxyAuth。UniqueIdHeader
选项,则必须包含ProxyAuth。UsernameHeader
或者是ProxyAuth。电子邮件Header
选项(或两者)。如果不配置用户名属性,RStudio Connect将在用户第一次登录时为该用户创建一个新的惟一英格兰vs伊朗让球用户名。用户名将从用户的电子邮件地址派生而来,不带域,在必要时根据需要添加数字后缀以保持惟一性。
这些生成的用户名以后可以由用户自己或管理员修改,只要它们保持唯一即可。英格兰vs伊朗让球否则RStudio Connect将拒绝更改用户名。
请注意
强烈建议在可能存在重复用户名的配置与用户名唯一的配置之间切换。方法确保用户名的唯一性usermanager
在重新启动RStudio Connect之前使用CLI英格兰vs伊朗让球工具。看到用户管理CLI附录了解更多信息。
编辑用户属性#
代理发送的用户配置文件字段在RStudio Connect中是不可编辑的。英格兰vs伊朗让球
请注意
控件在登录之前强制更新不可编辑字段usermanager
CLI的工具。看到用户管理CLI附录。
用户的名、姓和电子邮件地址被认为是可编辑的只有如果代理没有通过配置的头文件提供。设置授权。UserInfoEditableBy
默认值为AdminAndSelf
,允许用户和管理员管理这些用户配置文件属性。配置授权。UserInfoEditableBy
与管理
配置文件的编辑是否仅限于管理员。
提示
如果禁用,建议禁用ProxyAuth。RegisterOnFirstLogin
的值假
,您也可以配置授权。UserInfoEditableBy
来管理
.的值管理
指由管理员创建的用户不能被非管理员修改。
编辑用户角色#
用户角色仅在RStudio Connect中可编辑英格兰vs伊朗让球用户角色自动映射没有配置,并且代理身份验证提供程序没有配置为将角色作为用户配置文件的一部分发送进来。
用户角色自动映射#
英格兰vs伊朗让球RStudio Connect提供了在用户登录时将用户信息映射到有效角色的方法。这可以通过定义为用户配置文件或via的一部分的角色来完成组成员.
使用组成员#
重要的
此选项不适用于本地管理组.
使用配置选项授权。UserRoleGroupMapping
通过组启用用户角色映射。
警告
当启用组映射时,从身份验证提供者接收角色作为用户概要信息的一部分的配置选项将被忽略,如果出现以下情况,RStudio Connect将无法启动英格兰vs伊朗让球授权。UserRoleMapping
也使。
当启用时,配置选项授权。ViewerRoleMapping
,授权。PublisherRoleMapping
,授权。管理istratorRoleMapping
Will指的是群体。
在下面的示例中使用组名。有意省略查看器映射,以便根据选项为其余用户分配基于授权。DefaultUserRole
它默认为查看器
.
;/etc/英格兰vs伊朗让球rstudio-connect / rstudio-connect.gcfg(授权)UserRoleGroupMapping=真正的PublisherRoleMapping=“开发人员”AdministratorRoleMapping=“Dev-Leaders”AdministratorRoleMapping=“it管理员”
请注意
当按唯一ID分组时,角色映射应该基于组的Unique id,而不是组的名称。
使用用户配置文件角色#
您可以配置RStudio Conne英格兰vs伊朗让球ct,使其基于代理发送的报头值自动定义用户角色。
使用配置选项授权。UserRoleMapping
启用用户角色映射。
的ProxyAuth。RoleHeader
还应该定义配置选项,以作为用户概要文件的一部分接收角色信息。
请注意
用户角色可以直接从身份验证提供程序使用,而不需要映射值,只要它只返回的值查看器
,出版商
而且管理员
在RStudio Connect中定义英格兰vs伊朗让球角色。
请注意
无效的角色值默认为授权。DefaultUserRole
如果启用了调试日志记录,则会在日志中报告该问题。
在启用映射时,可以使用配置选项将每个角色映射到特定于您的组织的一个或多个值授权。ViewerRoleMapping
,授权。PublisherRoleMapping
,授权。管理istratorRoleMapping
.
在以下示例中,身份验证提供者返回部门名称:
;/etc/英格兰vs伊朗让球rstudio-connect / rstudio-connect.gcfg(授权)UserRoleMapping=真正的ViewerRoleMapping=“人力资源”ViewerRoleMapping=“市场营销”PublisherRoleMapping=“工程”AdministratorRoleMapping=“它”
多用户角色映射#
当配置的映射与身份验证提供者发送的用户或组信息之间存在多个匹配时,将选择权限最多的角色。这种行为可以很容易地将用户提升到一个新角色。
请注意
如果考虑到安全问题,可以在这些场景中使用配置选项的更严格的行为授权。UserRoleMappingRestrictive
.当启用时,它将导致选择特权最小的角色。
组成员管理#
英格兰vs伊朗让球RStudio Connect可以配置为根据代理发送的组名列表自动将用户分配到现有组。对于每次登录尝试,接收到的组名列表将与用户当前的成员身份进行比较,将用户添加为新列出的组的成员,并将用户从不再列出的组中删除。
提示
如果您的代理不能发送用户组,仍然可以使用它本地管理组在RS英格兰vs伊朗让球tudio连接。
设置ProxyAuth。GroupsHeader
定义包含身份验证用户所属组的名称的报头的名称。
请注意
在登录时,您的身份验证提供者可能会发送组的标识符,而不是组的名称。参见下面的匹配组的标识符.
默认情况下,预期多个组名将作为同一个头文件的独立出现,例如:
;/etc/英格兰vs伊朗让球rstudio-connect / rstudio-connect.gcfg(ProxyAuth)GroupsHeader=“X-Auth-Groups”
HTTP请求:
X-Auth-Groups: Engineering X-Auth-Groups: manager…
但是,也可以在单个报头中发送组名。在这种情况下,头值中的组名必须作为单独的列表发送。使用的设置ProxyAuth。GroupsHeaderSeparator
要启用此行为并设置应该使用哪个字符分隔组名。
例如:
;/etc/英格兰vs伊朗让球rstudio-connect / rstudio-connect.gcfg(ProxyAuth)GroupsHeader=“X-Auth-Groups”GroupsHeaderSeparator=“|”
HTTP请求:
X-Auth-Groups:工程经理| |…
请注意
某些字符不能用作分隔符,因为它们在HTTP头文件中是被禁止的。的RFC 7230定义了这些。
手工组配置#
管理员可以使用RStudio Connect仪表板中的“People”选项卡从代理中“英格兰vs伊朗让球添加”对组的引用。RStudio Connect用户的组成英格兰vs伊朗让球员关系将只跟踪这些组,而不是从代理返回的整个组列表。
提示
这是默认的行为,当RStudio Connect用户与大量组相关联时,这是一个很好的选择,但其中只有一部分对内容访英格兰vs伊朗让球问控制有用。
警告
在通过仪表板中的“people”或通过Connect Server API删除组时应格外小心。删除一组也会移除所有关联吗在被删除的组和现有内容之间。
自动组配置#
除了成员资格之外,RStudio Connect还可以配英格兰vs伊朗让球置为根据代理为用户发送的组名列表自动提供(创建)新的组。可以使用ProxyAuth。GroupsAutoProvision
.
这意味着当用户登录时,将在RStudio Connect中为用户创建尚未存在的组。英格兰vs伊朗让球即使在最后一个成员被删除之后,这些组仍将无限期保留,以便为这些组的未来成员保留对内容的任何访问。
提示
删除过时或未使用的组可以通过仪表板、RStudio Connect Server API或最终通过英格兰vs伊朗让球usermanager
CLI。
手动与自动切换组分配#
通过自动配置创建的组没有所有者,而手动创建的组或通过Connect Server API创建的组总是与用户关联。
英格兰vs伊朗让球如果现有组的所有权与提供者配置不匹配,RStudio Connect将在启动时发出警告。
在这些情况下,要么需要删除组,要么需要调整组所有权。这可以用usermanager
CLI工具使用改变
命令使用——新主人
或——drop-owner
开关。
目标是,如果您打算在RStudio Connect中管理所有自动配置的组,那么应该为它们分配一个所有者。英格兰vs伊朗让球相反,如果您希望由身份验证提供程序管理所有组,则应该删除组的所有者。此外,您应该删除在新配置中没有意义的任何组,这可以通过RStudio Connect仪表板、Connect Server API或英格兰vs伊朗让球usermanager
.看到用户管理CLI附录。
本地管理组#
如果您决定不配置对由代理发送的组的支持,您仍然可以在RS英格兰vs伊朗让球tudio Connect中使用组。卡塔尔世界杯欧洲预选赛赛程表
重要的
本地管理的组与驱动代理的身份验证机制中可能存在的组没有关系。
这些组是RStudio Connect的本地组,可以英格兰vs伊朗让球通过仪表板或连接服务器API创建。还必须使用相同的方法管理组成员。
提示
如果在RStudio Connect中完全不需要组,请设置英格兰vs伊朗让球授权。用户组
配置选项假
.
匹配组的标识符#
默认情况下,RStudi英格兰vs伊朗让球o Connect会将代理发送的组列表与RStudio Connect中存在的组的名称进行匹配。代理背后的一些身份验证引擎可能不发送组名,而是发送它们的惟一标识符(如guid)。
组织的名字#
当您的代理发送组名时,可以使用RStudio Connect使用区分大小写的字符串比较来匹配组的默认行为。英格兰vs伊朗让球
请注意
如果组在代理后面的身份验证引擎中被重命名,它们将在RStudio Connect接收到时被识别为新组。英格兰vs伊朗让球取决于设置ProxyAuth。GroupsAutoProvision
,这些新组要么被添加,要么被忽略。在任何情况下,旧的组都不会被重命名或从内容acl中删除。您仍然可以在RStudio Connect中重命名一个组,以匹配英格兰vs伊朗让球代理中的组名,以保留与内容的所有关联。如果通过自动分配创建了同名的重复组,则必须首先删除这个新组。
按唯一ID分组#
为了支卡塔尔世界杯欧洲预选赛赛程表持代理为组发送唯一标识符(而不是组的名称)的场景,RStudio Connect可以通过使用设置[来配置为匹配这些标识符。英格兰vs伊朗让球ProxyAuth。GroupsByUniqueId
)(. . /附件/ configuration.md # ProxyAuth.GroupsByUniqueId。
警告
这被认为是RStudio Connect中的一个高级功能。英格兰vs伊朗让球通过标识符而不是名称来标识组需要对所有组管理工作流程使用RSt英格兰vs伊朗让球udio Connect Server API。在这个场英格兰vs伊朗让球景中,RStudio Connect Dashboard不允许组管理,除非将组与某些内容关联起来,这仍然是可能的。
必须使用Connect Server API在RStudio Connect中提供由唯一标识符标识的组。英格兰vs伊朗让球API调用允许组的关联unique_id
(与代理在身份验证期间发送的名称相同),使用本地管理的用户友好的名称,通常与驱动代理的身份验证中使用的名称相同。英格兰vs伊朗让球在这种情况下,RStudio Connect不会强制使用唯一的组名。
重要的
当ProxyAuth。GroupsByUniqueId
启用,SAML。GroupsAutoProvision
可以不被启用。这将导致在RStudio Connect中创建没有意义名称的组,因为IdP将只提供一个惟一ID。英格兰vs伊朗让球
切换群组身份#
最好,GroupsByUniqueId
在RStudio Connect中有任何组之前,都应该启用。英格兰vs伊朗让球如果已经创建了任何组,并且希望使用此选项,强烈建议运行usermanager——组织——normalize-ids
命令使这些现有组在新的设置下正常工作。看到用户管理CLI附录了解更多。的usermanager
如果您决定禁用,也应该运行上面的命令GroupsByUniqueId
在以后的时间里。
故障诊断代理身份验证#
在试图排除与代理身份验证相关的问题时,可以使用ProxyAuth。日志记录
:
;/etc/英格兰vs伊朗让球rstudio-connect / rstudio-connect.gcfg(ProxyAuth)日志记录=真正的
所有头的内容和与身份验证请求一起接收的cookie的名称将被记录。RStudio Connect使用的cookie和头文件英格兰vs伊朗让球将被记录为内部> <
.外部cookie值将被记录为> <修订
.如果一个外部cookie没有值,它将被记录为<空>
.
服务器日志中出现“Rejected insecure proxy authentication attempt”,用户无法登录
确保代理已配置为从传入请求中删除已配置的用户名、名称、电子邮件和唯一标识标头(
X-Auth-Username
默认情况下)。确保用户通过其代理连接到RStudio Connect,而不是直接连接到英格兰vs伊朗让球服务器。如上所述,您的网络应该配置为不可能进行到RStudio Connect的非代理连接。英格兰vs伊朗让球
尝试从IDE部署到RStudio Conne英格兰vs伊朗让球ct失败,因为用户被重定向到单点登录页面。
请确保将代理配置为通过设置了
X-Auth-Token
头。确保用户拥有
rsconnect
包含至少版本的包0.8.7
安装。如果没有,并且该包无法从CRAN获得,则可以使用devtools:: install_github(英格兰vs伊朗让球“rstudio / rsconnect”)
尝试使用连接服务器API失败,因为用户被重定向到单点登录页面。
请确保将代理配置为通过设置了
身份验证
头和一个关键
价值。确保代理没有阻塞宿主api(例如Plumber, FastAPI)可能需要的其他头文件。
代理配置示例#
下面的示例演示如何拦截和重新路由未经过身份验证的请求到RStudio Connect,它是通过反向代理在英格兰vs伊朗让球/ rsconnect
.这些示例假设正在运行一个身份验证服务器/身份验证
在认证成功后,将设置一个仅http的cookie命名为verified-user
控件中指定的URL将用户重定向回RStudio Connect英格兰vs伊朗让球url
查询参数。其余发送额外用户信息的示例也应用了类似的逻辑。
重要的
这些示例旨在帮助在身份验证代理后进行RStudio Connect的初始配置。英格兰vs伊朗让球不建议在生产环境中使用它们,它们具有严重的功能限制(即,'
而且;
在值中不被接受,因为示例使用纯文本cookie)并且完全不提供安全性。我们敦促客户为他们的代理坚持最佳的安全实践和推荐设置。
下面的所有示例都基于如何在RStudio Connect前运行代理。英格兰vs伊朗让球看到使用代理运行.
请注意
这些示例假设您的代理没有用于登录和注销的特定url,但是在每个示例之后都有指示,说明如果这些url可用,并且在RStudio Connect中通过选项配置了这些url,那么应该在代理配置中更改什么英格兰vs伊朗让球ProxyAuth。LoginURL
而且ProxyAuth。LogoutURL
.
基本配置示例#
允许来自身份验证代理的用户进入RStudio Connect的最小值。英格兰vs伊朗让球它假定代理身份验证的现有设置为默认值。看到配置代理身份验证.
这些示例通过代理发送流量verified-user
饼干。如果存在各自的头文件,这些示例还允许从RStudio IDE或API部署流量。英格兰vs伊朗让球看到使用RStudio 英格兰vs伊朗让球Connect Server API而且从RStudio IDE部署英格兰vs伊朗让球.
NGINX:
映射$http_upgrade $connection_upgrade{默认升级;”“关闭;}映射$http_cookie $auth_username{默认";“~ * verified-user =(? <用户名>[^;]+)”“美元的用户名”;} map "$http_x_auth_token" $has_token {default ";”~。”+“令牌”;} map "$http_authorization" $has_key {default ";“~关键。+”“关键”; } map "$auth_username:$has_token:$has_key" $requires_auth { default 0; "::" 1; } server { listen 80 default_server; location /rsconnect/ { # redirect directly to authentication if the username is not present # needed if there is no login endpoint in the proxy if ($requires_auth = 1) { return 307 $scheme://$host:$server_port/auth/login?url=$request_uri; } rewrite ^/rsconnect/(.*)$ /$1 break; proxy_pass http://rstudio-connect-host:3939; proxy_redirect / /rsconnect/; proxy_pass_request_headers on; proxy_connect_timeout 5; proxy_http_version 1.1; proxy_buffering off; # Required for XHR-streaming proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection $connection_upgrade; proxy_set_header X-RSC-Request $scheme://$host:$server_port$request_uri; proxy_set_header X-Auth-Username $auth_username; } }
请注意
如果您已配置ProxyAuth。LoginURL
身份验证条件If ($requires_auth = 1)
不再需要上面的例子。
Apache HTTP服务器:
RewriteEngine on SetEnvIf Cookie " authenticated -user=([^;]+)"AuthUsername=$1 #如果用户名不存在#需要如果代理中没有登录端点< if "%{REQUEST_URI} !~ m#^/auth# && -z env('AuthUsername') && -z %{HTTP:X-Auth-Token} && %{HTTP:Authorization} !~ /Key .+/"> redirect 307 "%{REQUEST_SCHEME}://%{HTTP_HOST}/auth/login?url=%{REQUEST_URI}" 如果> #存储带有虚拟重写规则RewriteRule的变量值。- [E=req_scheme:%{REQUEST_SCHEME}]重写规则。- [E=http_host:%{http_host}]重写规则。- [E=req_uri:%{REQUEST_URI}] # set header with variables RequestHeader set X-RSC-Request "%{req_scheme} E://%{http_host} E %{req_uri} E " RewriteCond %{HTTP:Upgrade} websocket [NC] RewriteCond %{HTTP:Connection} Upgrade [NC] RewriteRule ^/(.*)“ws: /英格兰vs伊朗让球 / rstudio-connect-host: 3939 / $ 1”(P、L) <如果”- n env (AuthUsername)”> RequestHeader set X-Auth-Username "%{AuthUsername}e" RequestHeader unset X-Auth-Username ProxyPass http://英格兰vs伊朗让球rstudio-connect-host:3939/ connectiontimeout=5
请注意
如果您已配置ProxyAuth。LoginURL
,认证条件<如果“% {REQUEST_URI}
不再需要上面的例子。
带有用户概要文件支持的配置示例卡塔尔世界杯欧洲预选赛赛程表#
这些配置扩展了基本示例,并添加了对携带用户配置信息(如姓名和电子邮件)的头的支持。卡塔尔世界杯欧洲预选赛赛程表不同头文件的名称也必须出现在RStudio Connect配置中。英格兰vs伊朗让球看到配置代理身份验证.
NGINX:
映射$http_upgrade $connection_upgrade{默认升级;”“关闭;}映射$http_cookie $auth_username{默认";“~ * verified-user =(? <用户名>[^;]+)”“美元的用户名”;}映射$http_cookie $auth_firstname{默认"";”~ * proxyauth-as-first =(? <第一次>[^;]+)”“美元第一”;}映射$http_cookie $auth_lastname{默认"";“~ * proxyauth-as-last =(? <上>[^;]+)” "$last"; } map $http_cookie $auth_email { default ""; "~*proxyauth-as-email=(?[^;]+)" "$email"; } map "$http_x_auth_token" $has_token { default ""; "~.+" "token"; } map "$http_authorization" $has_key { default ""; "~Key .+" "key"; } map "$auth_username:$has_token:$has_key" $requires_auth { default 0; "::" 1; } server { listen 80 default_server; location /rsconnect/ { # redirect directly to authentication if the username is not present # needed if there is no login endpoint in the proxy if ($requires_auth = 1) { return 307 $scheme://$host:$server_port/auth/login?url=$request_uri; } rewrite ^/rsconnect/(.*)$ /$1 break; proxy_pass http://rstudio-connect-host:3939; proxy_redirect / /rsconnect/; proxy_pass_request_headers on; proxy_connect_timeout 5; proxy_http_version 1.1; proxy_buffering off; # Required for XHR-streaming proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection $connection_upgrade; proxy_set_header X-RSC-Request $scheme://$host:$server_port$request_uri; proxy_set_header X-Auth-Username $auth_username; proxy_set_header X-Auth-Firstname $auth_firstname; proxy_set_header X-Auth-Lastname $auth_lastname; proxy_set_header X-Auth-Email $auth_email; } }
提示
如果您已配置ProxyAuth。LoginURL
,认证条件If ($requires_auth = 1)
不再需要上面的例子。
Apache HTTP服务器:
RewriteEngine on SetEnvIf Cookie " authenticated -user=([^;]+)"AuthUsername=$1 SetEnvIf Cookie "proxyauth-as-first=([^;]+)"SetEnvIf Cookie "proxyauth-as-last=([^;]+)"SetEnvIf Cookie "proxyauth-as-email=([^;]+)"aumail =$1 #如果用户名不存在则直接重定向到认证#如果代理中没有登录端点则需要< if "%{REQUEST_URI} !~ m#^/auth# && -z env('AuthUsername') && -z %{HTTP:X-Auth-Token} && %{HTTP:Authorization} !url = % {REQUEST_URI} " < /如果> <如果“- n env(“AuthUsername”)"> RequestHeader set X-Auth-Username "%{AuthUsername}e" RequestHeader unset X-Auth-Username RequestHeader set X-Auth-Firstname "%{AuthFirstName}e" RequestHeader unset X-Auth-Firstname RequestHeader set X-Auth-Lastname "%{AuthLastName}e" RequestHeader unset X-Auth-Lastname RequestHeader set X-Auth-Email "%{aumail}e" RequestHeader unset X-Auth-Email #用虚拟重写规则RewriteRule存储变量值。- [E=req_scheme:%{REQUEST_SCHEME}]重写规则。- [E=http_host:%{http_host}]重写规则。 - [E=req_uri:%{REQUEST_URI}] # set header with variables RequestHeader set X-RSC-Request "%{req_scheme}e://%{http_host}e%{req_uri}e" RewriteCond %{HTTP:Upgrade} websocket [NC] RewriteCond %{HTTP:Connection} upgrade [NC] RewriteRule /rsconnect/(.*) "ws://rstudio-connect-host:3939/$1" [P,L] RewriteRule ^/rsconnect$ /rsconnect/ [R] ProxyPass http://rstudio-connect-host:3939/ connectiontimeout=5 ProxyPassReverse /rsconnect/ ProxyPassReverse /
提示
如果您已配置ProxyAuth。LoginURL
,认证条件<如果“% {REQUEST_URI}
不再需要上面的例子。
配置示例,支持用户配置文件和唯一标识卡塔尔世界杯欧洲预选赛赛程表#
在这些示例中,用户名被认为是用户配置文件的一部分。附加的报头用于通信用户标识。看到配置代理身份验证.
NGINX:
映射$http_upgrade $connection_upgrade{默认升级;”“关闭;}映射$http_cookie $auth_uniqueid{默认";“~ * proxyauth-as-id = (? < uniqueid >[^;] +)”“uniqueid美元”;}映射$http_cookie $auth_username{默认";“~ * verified-user =(? <用户名>[^;]+)”“美元的用户名”;}映射$http_cookie $auth_firstname{默认"";”~ * proxyauth-as-first =(? <第一次>[^;]+)” "$first"; } map $http_cookie $auth_lastname { default ""; "~*proxyauth-as-last=(?[^;]+)" "$last"; } map $http_cookie $auth_email { default ""; "~*proxyauth-as-email=(?[^;]+)" "$email"; } map "$http_x_auth_token" $has_token { default ""; "~.+" "token"; } map "$http_authorization" $has_key { default ""; "~Key .+" "key"; } map "$auth_uniqueid:$has_token:$has_key" $requires_auth { default 0; "::" 1; } server { listen 80 default_server; location /rsconnect/ { # redirect directly to authentication if the username is not present # needed if there is no login endpoint in the proxy if ($requires_auth = 1) { return 307 $scheme://$host:$server_port/auth/login?url=$request_uri; } rewrite ^/rsconnect/(.*)$ /$1 break; proxy_pass http://rstudio-connect-host:3939; proxy_redirect / /rsconnect/; proxy_pass_request_headers on; proxy_connect_timeout 5; proxy_http_version 1.1; proxy_buffering off; # Required for XHR-streaming proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection $connection_upgrade; proxy_set_header X-RSC-Request $scheme://$host:$server_port$request_uri; proxy_set_header X-Auth-Uniqueid $auth_uniqueid; proxy_set_header X-Auth-Username $auth_username; proxy_set_header X-Auth-Firstname $auth_firstname; proxy_set_header X-Auth-Lastname $auth_lastname; proxy_set_header X-Auth-Email $auth_email; } }
提示
如果您已配置ProxyAuth。LoginURL
,认证条件If ($requires_auth = 1)
不再需要上面的例子。
Apache HTTP服务器:
RewriteEngine on SetEnvIf Cookie " authenticated -user=([^;]+)"SetEnvIf Cookie "proxyauth-as-user=([^;]+)"AuthUsername=$1 SetEnvIf Cookie "proxyauth-as-first=([^;]+)"SetEnvIf Cookie "proxyauth-as-last=([^;]+)"SetEnvIf Cookie "proxyauth-as-email=([^;]+)"aumail =$1 #如果用户名不存在#需要如果代理中没有登录端点< if "%{REQUEST_URI} !~ m#^/auth# && -z env('AuthUniqueId') && -z %{HTTP:X-Auth-Token} && %{HTTP:Authorization} !~ /Key .+/">重定向307 "%{REQUEST_SCHEME}://%{HTTP_HOST}/auth/login?url = % {REQUEST_URI} " < /如果> <如果“- n env(“AuthUniqueId”)"> RequestHeader set X-Auth-Uniqueid "%{AuthUniqueId}e" RequestHeader unset X-Auth-Uniqueid RequestHeader set X-Auth-Username "%{AuthUsername}e" RequestHeader unset X-Auth-Username RequestHeader set X-Auth-Firstname "%{AuthFirstName}e" RequestHeader unset X-Auth-Firstname RequestHeader set X-Auth-Lastname "%{AuthLastName}e" RequestHeader unset X-Auth-Lastname RequestHeader set X-Auth-Email "%{aumail}e" RequestHeader unset X-Auth-Email #用虚拟重写规则RewriteRule存储变量值。 - [E=req_scheme:%{REQUEST_SCHEME}] RewriteRule . - [E=http_host:%{HTTP_HOST}] RewriteRule . - [E=req_uri:%{REQUEST_URI}] # set header with variables RequestHeader set X-RSC-Request "%{req_scheme}e://%{http_host}e%{req_uri}e" RewriteCond %{HTTP:Upgrade} websocket [NC] RewriteCond %{HTTP:Connection} upgrade [NC] RewriteRule /rsconnect/(.*) "ws://rstudio-connect-host:3939/$1" [P,L] RewriteRule ^/rsconnect$ /rsconnect/ [R] ProxyPass http://rstudio-connect-host:3939/ connectiontimeout=5 ProxyPassReverse /rsconnect/ ProxyPassReverse /
提示
如果您已配置ProxyAuth。LoginURL
,认证条件<如果“% {REQUEST_URI}
不再需要上面的例子。