我正在使用OpenID实现登录系统。
主题标识符
一组属性的标识符。它必须是一个URI。主题标识符对应于消息的认证部分中的最终用户标识符。换句话说,消息的属性交换部分中的身份属性的主题与认证部分中的最终用户相同。主题标识符不包含在属性交换中。
URI在定义上非常大,可以是http://
,也可以是gopher://
。
我确定gopher不是一个有效的URI协议,但是,除了http(s)之外,还有什么允许作为OpenID协议的主题标识符?
感谢您的帮助!
答案 0 :(得分:2)
你引用了错误的规范。 openid specification,第7.2节说:
7.2。归一化
最终用户的输入必须标准化为标识符,如下所示:
- 如果用户的输入以“xri://”前缀开头,则必须将其删除,以便以规范形式使用XRI。
- 如果结果字符串的第一个字符是XRI全局上下文符号(“=”,“@”,“+”,“$”,“!”)或“(”,如第2.2.1节中所定义[XRI_Syntax_2.0],然后输入应该被视为XRI。
- 否则,输入应该被视为http URL;如果它不包含“http”或“https”方案,则标识符必须以字符串“http://”作为前缀。如果URL包含片段部分,则必须将其与片段分隔符“#”一起剥离。有关更多信息,请参见第11.5.2节。
- URL标识符必须在检索其内容时通过以下重定向进一步规范化,并最终将[RFC3986]的第6节中的规则应用于最终目标URL。该最终URL必须由依赖方记录为声明的标识符,并在请求身份验证时使用。
从第三点开始,我们可以推断出标识符必须是http(s)URL或XRI。