- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
据我所知,DC / OS具有两种不同类型的令牌:
身份验证令牌:通过登录名检索
https://public-master-ip/login?redirect_uri=urn:ietf:wg:oauth:2.0:oob。该令牌用于检索api令牌。
api令牌:通过对https://public-master-ip/acs/api/v1/auth/login的后调用在请求正文中使用身份验证令牌来检索。该令牌用于授权针对api的调用。这样的令牌会在5天后过期。
我的问题是
我的假设正确吗?
身份验证令牌会过期吗?如果是这样,何时以及是否有办法刷新它?
最佳答案
让我首先定义当前(1.8)开放DC / OS身份验证过程的目标,然后逐步执行您的假设。之后,我会回答您的问题。
目标
当前开放式DC / OS身份验证过程的目标是使用Auth0基础结构针对三个流行的身份提供者之一触发单点登录身份验证流,并将结果报告回DC / OS群集。如果DC / OS群集对此结果感到满意,它将发出专门针对该单独群集调整的身份验证令牌。
对您的假设的评论
身份验证令牌:通过https://public-master-ip/login?redirect_uri=urn:ietf:wg:oauth:2.0:oob登录名检索。该令牌用于检索api令牌。
大致是这样。但是,您所谓的“身份验证令牌”实际上是OpenID Connect身份提供者发出的OpenID Connect ID令牌。
让我们慢慢地讨论这个问题,因为它涉及到一点点。
幕后发生的是OpenID Connect单点登录身份验证流程。
更准确地说,DC / OS UI显示一个内嵌框架,该内嵌框架加载由Auth0托管的一段JavaScript,当您在浏览器中执行该JavaScript时,它执行所谓的implicit flow(这是三个指定的OpenID Connect身份验证流程之一)类型)。
在此流程(*
)结束时,在浏览器中执行的JavaScript代码将收到一个所谓的OpenID Connect ID Token(当然,来自身份提供者,在此情况下为Auth0)。此令牌是使用身份提供者的私钥签名的JSON Web令牌(JWT,请参见RFC7519)(在这种情况下,它实际上是Auth0,基本上是其他身份提供者(例如Google帐户)的代理)。
然后,接收ID令牌的JavaScript块-如您所说-将ID令牌POST到您的DC / OS集群(到https://public-master-ip/acs/api/v1/auth/login)。接收端是DC / OS的“管理路由器”(后者只是一个带皮筋的nginx)后面的Web应用程序。该Web应用程序检查ID令牌的有效负载(JSON),并找到键/值对"iss": "https://dcos.auth0.com/"
。因此,它知道谁(假装)已发行该令牌!然后,它继续并获取https://dcos.auth0.com/.well-known/openid-configuration(哎呀,它从哪里知道URL?这是OpenID Connect Discovery 1.0和RFC5785定义的魔术)。那里的JSON文档定义了一个JSON Web密钥集(JWKS)文档(通过RFC7517指定),揭示了与(假定)已对ID令牌签名的私钥相对应的公钥。因此,该Web应用程序将继续运行,并直接从身份提供者(通过HTTPS)获取公共密钥。然后,它使用该公共密钥来验证ID令牌的加密签名(当然,它也会检查到期时间)。如果通过了ID令牌验证,那么我所讨论的DC / OS Web应用程序正确地假设已根据Auth0对发送ID令牌的用户代理进行了成功验证。并且,信任Auth0,我们正确地假设用户代理已通过身份验证,例如Google帐户。
只有这样,它(我所讨论的DC / OS中的小型Web应用程序)才将身份存储在DC / OS中,分配唯一的用户ID,并发出DC / OS身份验证令牌。该令牌通过命名的用户ID引用给定的身份。
(*
)请注意,只有在您成功向身份验证提供者(例如Google帐户)进行身份验证并同意与第三方服务共享身份详细信息后,身份提供者才会向您的浏览器发出ID令牌。
api令牌:通过对https://public-master-ip/acs/api/v1/auth/login的后调用在请求正文中使用身份验证令牌来检索。该令牌用于授权针对api的调用。这样的令牌会在5天后过期。
在DC / OS术语中,这是DC / OS身份验证令牌。这是一个JWT,仅使用DC / OS群集已知的随机密钥签名。 DC / OS中的管理路由器可以验证此类身份验证令牌。某些针对Admin Router的HTTP请求仅在请求中包含有效的身份验证令牌时才被代理到后端服务(因此,此令牌主要用于身份验证,但如果需要的话,也可以用于非常基本的粗粒度授权) 。否则,管理路由器将以401响应(读取:“未验证”)。
您的问题的答案
我的假设正确吗?
我希望已经澄清
您所谓的“身份验证令牌”是OpenID Connect ID令牌(JWT)。
在DC / OS生态系统中,所谓的“ api令牌”就是所谓的“ DC / OS身份验证令牌”(从技术上讲,它也是JWT)。
身份验证令牌会过期吗?
我将这个问题读为“ OpenID Connect ID令牌会过期吗?”确实是的!这是规范关于ID令牌到期的说明:
exp-必填-到期时间,此后不得接受ID令牌进行处理。此参数的处理要求当前日期/时间必须早于值中列出的到期日期/时间。实施者可以提供一些小的余地,通常不超过几分钟,以解决时钟偏差。它的值是一个JSON数字,代表从1970-01-01T0:0:0Z(以UTC度量)到日期/时间为止的秒数。有关一般日期/时间(尤其是UTC)的详细信息,请参阅RFC 3339 [RFC3339]。
请注意,该规范没有规定特定的ID令牌生存期-这取决于身份提供者的设置。对于dcos.auth0.com发出的ID令牌,我刚刚确认
>>> exp = 1474742063
>>> iat = 1474310063
>>> lifetime_days = (exp - iat) / (60.0 * 60 * 24)
>>> lifetime_days
5.0
nonce
机制(描述为
in the spec),从而在多个级别上引入了更多概念上的安全性(例如减轻重播攻击)。
关于marathon - DC/OS-身份验证与api token ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39546227/
我是 dc.js 的新手,我对 dc 的灵 active 有一些疑问。 首先,我一直在寻找答案,但还没有找到任何答案。 1) 我正在使用 dc.sunburst 图表。我想知道是否有可能创建 Zoom
谁能解释一下 ldap 字符串部分的构成。 我有一个是: string strSQL = "SELECT mail FROM 'LDAP://DC=amrs,DC=win,DC=ml,dc=COM'
他们已经就如何将 dc.js 简单地用作图形库(例如绘制饼图、条形图...)而不需要交叉过滤器进行了各种讨论,例如,如果您只想在数据已经是一个(标签,值)。 我没有找到任何关于如何做到这一点的例子。这
当我点击数据表中的一行时,我需要过滤其他图表。 我做了 my_table.on('pretransition', function (table) { table.selectAll('td
我想显示小切片( chart.minAngleForLabel(0.05) )的标签,避免文本重叠。 我添加了一个将标签移向外边缘的renderlet: .on('renderlet', func
如何在新列的 dc.js 数据表中添加带有事件监听器的按钮。 如果可能的话,我基本上想添加自定义 html。 最佳答案 添加按钮只是返回列的 html 的问题 dc.dataTable (dom) .
这个问题在这里已经有了答案: Initial Range selection in DC.js chart (1 个回答) 关闭 7 年前。 我创建了 this可视化,并希望在解释文本中使用预定义的
我用 dc.js 制作了一个热图,我想知道 dc.js 中是否有热图的键或图例函数。我在互联网上搜索过,但似乎找不到内置的方法,那么有没有其他人解决过这个问题? 最佳答案 我遇到了同样的任务,我所做的
我有一个具有以下模型的数据源: [ { days : 3, value : 500 }, { days : 30,
如果过滤后 dc.js 中的行图值为零,我们如何隐藏。我们有这样的代码: var kurum=data.dimension(function(d){return ""+ d.KURUM;});
自 1.4.0-alpha.06 版起,Crossfilter 支持数组维度 https://github.com/crossfilter/crossfilter/wiki/API-Reference
我希望在 dc.js 的多维数据集中绘制与连续变量关联的几个直方图。虽然使用 dc.barChart 组件很容易实现这一点,但我希望对这些直方图进行面积归一化。在我的例子中,bin 宽度是统一的,所以
我目前正在尝试弄清楚如何使用 DJ.js 和 D3.js 计算要显示的唯一记录数 数据集如下所示: id,name,artists,genre,danceability,energy,key,loud
在此图表上:http://junklogic.com/dcjs/barpie/index-controls.html 我的示例 JSON 文件中有与严重性评级相对应的图例,该文件代表我将在生产中使用的
我有以下数据。 我可以使用 dc.js 创建一个吗? 有人可以帮助我使用 dc js 创建直方图吗? 搜索了整个论坛但除了这个post 找不到有用的东西. 日期: numbers11012035242
以下是一组数据: var data = [{ machine1: [ {x:"20/12/2014", y:2}, {x:"21/12/2014", y:10} ]},{ machine2:
我使用 dc.js 和 crossfilter 创建了一个折线图。当前图表如下所示: 必需:我希望左上角的事件非事件图例位于中心图表的下方(底部),并且 x 轴刻度标签应该从一月到十二月开始。我在下面
我仍在尝试使用 dc 和 crossfilter 将图表链接在一起,这里我将表格和饼图链接在一起。链接在图表和表格之间起作用,因此当我单击饼图时,表格会相应更新。 然而,当我点击超链接时,这一行似乎没
我对允许打印填充填充对象的修复有疑问... 所以,完整的故事是我们使用了 Windows GDI FloodFill 函数,我们注意到它在打印机上不起作用,所以我在 inet 上找到的是创建一个内存
我是 MFC 编程的新手。这些天我正在使用 Jeff Prosise 的书来学习 MFC 编程。我遇到过:CClientDC dc (this); 我从 CClientDC 类的定义中找到了一个构造函
我是一名优秀的程序员,十分优秀!