我一直在試圖找到解決方案,我的問題是過去10天,我什麼也沒找到。 因此,我試圖限制SAML 2.0的身份驗證上下文XML模式定義。 XSD文檔可在http://docs.oasis-open.org/security/saml/v2.0/saml-schema-authn-context-types-2.0.xsd訪問。如何限制SAML 2.0驗證上下文的XSD
,我試圖限制的部分是一個涉及到XSD文件的這一部分:
<xs:complexType name="PasswordType">
<xs:sequence>
<xs:element ref="Length" minOccurs="0"/>
<xs:element ref="Alphabet" minOccurs="0"/>
<xs:element ref="Generation" minOccurs="0"/>
<xs:element ref="Extension" minOccurs="0" maxOccurs="unbounded"/>
</xs:sequence>
<xs:attribute name="ExternalVerification" type="xs:anyURI" use="optional"/>
</xs:complexType>
<xs:element name="RestrictedPassword" type="RestrictedPasswordType"/>
<xs:complexType name="RestrictedPasswordType">
<xs:complexContent>
<xs:restriction base="PasswordType">
<xs:sequence>
<xs:element name="Length" type="RestrictedLengthType" minOccurs="1"/>
<xs:element ref="Generation" minOccurs="0"/>
<xs:element ref="Extension" minOccurs="0" maxOccurs="unbounded"/>
</xs:sequence>
<xs:attribute name="ExternalVerification" type="xs:anyURI" use="optional"/>
</xs:restriction>
</xs:complexContent>
</xs:complexType>
好了,我不知道如何限制RestrictedPassword複雜類型。下面是我的XSD,它試圖限制原始的XSD文檔。
<?xml version="1.0" encoding="UTF-8"?>
<xs:schema version="2.0"
targetNamespace="urn:m:SAML:2.0:ac:classes:K"
xmlns:xs="http://www.w3.org/2001/XMLSchema"
xmlns="urn:m:SAML:2.0:ac:classes:K"
finalDefault="extension"
blockDefault="substitution">
<xs:redefine schemaLocation="http://docs.oasis-open.org/security/saml/v2.0/saml-schema-authn-context-types-2.0.xsd">
<xs:complexType name="RestrictedPasswordType">
<xs:complexContent>
<xs:restriction base="RestrictedPasswordType">
<xs:sequence>
<xs:element ref="Length" minOccurs="0"/>
<xs:element ref="Generation"/>
<xs:element ref="Extension" minOccurs="0" maxOccurs="unbounded"/>
</xs:sequence>
<xs:attribute name="ExternalVerification" type="xs:anyURI" use="optional"/>
</xs:restriction>
</xs:complexContent>
</xs:complexType>
</xs:redefine>
</xs:schema>
當我試圖驗證此XSD在該工具http://www.utilities-online.info/xsdvalidation/#.UwJAzK69h31返回我一個錯誤,我不知道如何解決。這是錯誤:
Not valid. Error - Line 12, 51: org.xml.sax.SAXParseException; lineNumber: 12; columnNumber: 51; rcase-Recurse.2: There is not a complete functional mapping between the particles. Error - Line 12, 51: org.xml.sax.SAXParseException; lineNumber: 12; columnNumber: 51; derivation-ok-restriction.5.4.2: Error for type 'RestrictedPasswordType'. The particle of the type is not a valid restriction of the particle of the base.
任何幫助是值得歡迎的。
謝謝!
多梅內克,馬龍
您好,我同意你的看法。按照建議,我更改了XSD,並且出現如下錯誤(與以前的錯誤相同):無效。錯誤 - 第12,51行:org.xml.sax.SAXParseException; lineNumber:12; columnNumber:51; rcase-Recurse.2:粒子之間沒有完整的功能映射。錯誤 - 第12,51行:org.xml.sax.SAXParseException; lineNumber:12; columnNumber:51; derivation-ok-restriction.5.4.2:類型'RestrictedPasswordType'的錯誤。該類型的粒子不是基底粒子的有效限制 – marloncdomenech
上面鏈接的基礎文檔沒有聲明「targetNamespace」。但是你在派生模式中聲明瞭一個。重新定義的模式應該與基本模式具有相同的'targetNamespace'。嘗試從架構中刪除屬性'xmlns'和'targetNamespace'。 – helderdarocha
它工作。我脫掉了'xmlns'和'targetNamespace',它工作。但是,還有其他類似的文檔定義了不同於原始文件的'xmlns'和'targetNamespace',這些文件都是有效的。這裏是一個例子:[http://docs.oasis-open.org/security/saml/v2.0/saml-schema-authn-context-nomad-telephony-2.0.xsd。你知道爲什麼嗎? – marloncdomenech