背景
我正在尝试在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,而不仅仅是使用电子邮件。
答案 0 :(得分:0)
解决此问题的最简单方法是向身份提供者询问其元数据。
这描述了您要询问的所有属性。
然后您可以从元数据中复制/粘贴。