这些SAML术语是什么意思?

时间:2018-08-17 07:34:42

标签: ruby-on-rails ruby saml

背景

我正在尝试在Rails应用程序上实现SAML身份验证。我实现的Rails应用程序将充当服务提供商。

我使用devise来管理用户,所以我想使用devise_saml_authenticable gem来帮助我实现SAML。

但是在阅读其README指令时,我不理解其使用的SAML术语。它要求我检查ruby_saml的GitHub页面,但那里也看不到解释。

实际问题

对于代码:

Pkg.add("PyPlot")

  Updating registry at `~/.julia/registries/Uncurated`
  Updating git-repo `https://github.com/JuliaRegistries/Uncurated.git`
 Resolving package versions...
ERROR: Unsatisfiable requirements detected for package (unknown) [10745b16]:
 (unknown) [10745b16] log:
 ├─(unknown) [10745b16] has no known versions!
 └─found to have no compatible versions left with Distributions [31c24e10] 
   └─Distributions [31c24e10] log:
     ├─possible versions are: [0.1.0-0.1.4, 0.2.0-0.2.13, 0.3.0, 0.6.4-0.6.7, 0.7.0-0.7.6, 0.8.0-0.8.10, 0.9.0, 0.10.0-0.10.2, 0.11.0-0.11.1, 0.12.0-0.12.5, 0.13.0, 0.14.0-0.14.2, 0.15.0, 0.16.0-0.16.2] or uninstalled
     └─restricted to versions 0.16.2 by an explicit requirement, leaving only versions 0.16.2
Stacktrace:
 [1] #propagate_constraints!#61(::Bool, ::Function, ::Pkg.GraphType.Graph, ::Set{Int64}) at /builddir/build/BUILD/julia/build/usr/share/julia/stdlib/v0.7/Pkg/src/GraphType.jl:1005
 [2] propagate_constraints! at /builddir/build/BUILD/julia/build/usr/share/julia/stdlib/v0.7/Pkg/src/GraphType.jl:946 [inlined]
 [3] #simplify_graph!#121(::Bool, ::Function, ::Pkg.GraphType.Graph, ::Set{Int64}) at /builddir/build/BUILD/julia/build/usr/share/julia/stdlib/v0.7/Pkg/src/GraphType.jl:1460
 [4] simplify_graph! at /builddir/build/BUILD/julia/build/usr/share/julia/stdlib/v0.7/Pkg/src/GraphType.jl:1460 [inlined]
 [5] resolve_versions!(::Pkg.Types.Context, ::Array{Pkg.Types.PackageSpec,1}) at /builddir/build/BUILD/julia/build/usr/share/julia/stdlib/v0.7/Pkg/src/Operations.jl:291
 [6] #add_or_develop#52(::Array{Base.UUID,1}, ::Function, ::Pkg.Types.Context, ::Array{Pkg.Types.PackageSpec,1}) at /builddir/build/BUILD/julia/build/usr/share/julia/stdlib/v0.7/Pkg/src/Operations.jl:973
 [7] #add_or_develop at ./none:0 [inlined]
 [8] #add_or_develop#8(::Symbol, ::Base.Iterators.Pairs{Union{},Union{},Tuple{},NamedTuple{(),Tuple{}}}, ::Function, ::Pkg.Types.Context, ::Array{Pkg.Types.PackageSpec,1}) at /builddir/build/BUILD/julia/build/usr/share/julia/stdlib/v0.7/Pkg/src/API.jl:39
 [9] #add_or_develop at ./none:0 [inlined]
 [10] #add_or_develop#7 at /builddir/build/BUILD/julia/build/usr/share/julia/stdlib/v0.7/Pkg/src/API.jl:24 [inlined]
 [11] #add_or_develop at ./none:0 [inlined]
 [12] #add_or_develop#6 at /builddir/build/BUILD/julia/build/usr/share/julia/stdlib/v0.7/Pkg/src/API.jl:23 [inlined]
 [13] #add_or_develop at ./none:0 [inlined]
 [14] #add_or_develop#5 at /builddir/build/BUILD/julia/build/usr/share/julia/stdlib/v0.7/Pkg/src/API.jl:22 [inlined]
 [15] #add_or_develop at ./none:0 [inlined]
 [16] #add#9 at /builddir/build/BUILD/julia/build/usr/share/julia/stdlib/v0.7/Pkg/src/API.jl:44 [inlined]
 [17] add(::String) at /builddir/build/BUILD/julia/build/usr/share/julia/stdlib/v0.7/Pkg/src/API.jl:44
 [18] top-level scope at none:0
 [19] macro expansion at /builddir/build/BUILD/julia/build/usr/share/julia/stdlib/v0.7/REPL/src/REPL.jl:116 [inlined]
 [20] (::getfield(REPL, Symbol("##28#29")){REPL.REPLBackend})() at ./task.jl:257

请解释一些变量的含义:

发布者-我应该给我的Rails应用程序起一个名字,并将这个名字告诉我的身份提供商,以便他们知道我是允许使用其登录服务的注册组织,这个名字叫做发行人,对吧?

根据上面的代码,我的rails应用程序是否必须编写一个动作来处理对其/ saml / metadata的请求?还是devise_saml_authenticable gem已经为我解决了这个问题?

authn_context -这是做什么用的?这需要吗?

name_identifier_format -这是做什么用的?

assertion_consumer_service_binding 是什么目的?

注意:我计划将业务ID用作用户的ID,而不仅仅是使用电子邮件。

1 个答案:

答案 0 :(得分:0)

解决此问题的最简单方法是向身份提供者询问其元数据。

这描述了您要询问的所有属性。

然后您可以从元数据中复制/粘贴。