@prefix : A combination of other security schemes identified by the Vocabulary Term OAuth 2.0 authentication security configuration for systems conformant with [[!RFC6749]] and [[!RFC8252]], identified by the Vocabulary Term
This feature is at risk."@en ;
schema:domainIncludes :DigestSecurityScheme .
:scopes rdf:type owl:DatatypeProperty ;
rdfs:label "scopes" ;
rdfs:comment "Set of authorization scope identifiers provided as an array. These are provided in tokens returned by an authorization server and associated with forms in order to identify what resources a client may access and how. The values associated with a form should be chosen from those defined in an OAuth2SecurityScheme
active on that form.
This feature is at risk."@en ;
schema:domainIncludes :OAuth2SecurityScheme .
:proxy rdf:type owl:DatatypeProperty ;
rdfs:label "proxy" ;
rdfs:comment "URI of the proxy server this security configuration provides access to. If not given, the corresponding security configuration is for the endpoint.
This feature is at risk."@en ;
schema:domainIncludes :SecurityScheme ;
schema:rangeIncludes xsd:anyURI .
:authorization rdf:type owl:ObjectProperty ;
rdfs:label "authorization" ;
rdfs:comment "URI of the authorization server."@en ;
schema:domainIncludes :BearerSecurityScheme, :OAuth2SecurityScheme .
# schema:domainIncludes :BearerSecurityScheme, :OAuth2SecurityScheme .
:refresh rdf:type owl:ObjectProperty ;
rdfs:label "refresh" ;
rdfs:comment "URI of the refresh server."@en ;
schema:domainIncludes :OAuth2SecurityScheme .
:token rdf:type owl:ObjectProperty ;
rdfs:label "token" ;
rdfs:comment "URI of the token server."@en ;
schema:domainIncludes :OAuth2SecurityScheme .
:oneOf rdf:type owl:ObjectProperty ;
rdfs:label "oneOf" ;
rdfs:comment "Array of two or more strings identifying other named security scheme definitions, any one of which, when satisfied, will allow access. Only one may be chosen for use."@en ;
schema:domainIncludes :ComboSecurityScheme .
:allOf rdf:type owl:ObjectProperty ;
rdfs:label "allOf" ;
rdfs:comment "Array of two or more strings identifying other named security scheme definitions, all of which must be satisfied for access."@en ;
schema:domainIncludes :ComboSecurityScheme .
:APIKeySecurityScheme rdf:type rdfs:Class, owl:Class ;
rdfs:label "APIKeySecurityScheme" ;
rdfs:subClassOf :SecurityScheme ;
rdfs:comment "API key authentication security configuration identified by the term apikey
(i.e., \"scheme\": \"apikey\"
). This scheme is to be used when the access token is opaque, for example when a key in a proprietary format is provided by a cloud service provider. In this case the key may not be using a standard token format. This scheme indicates that the key provided by the service provider needs to be supplied as part of service requests using the mechanism indicated by the \"in\"
field."@en .
:AutoSecurityScheme rdf:type rdfs:Class, owl:Class ;
rdfs:label "AutoSecurityScheme" ;
rdfs:subClassOf :SecurityScheme ;
rdfs:comment "An automatic authentication security configuration identified by the term auto
(i.e., \"scheme\": \"auto\"
). This scheme indicates that the security parameters are going to be negotiated by the underlying protocols at runtime, subject to the respective specifications for the protocol (e.g. [[!RFC8288]] for Basic Authentication when using HTTP)."@en .
:BasicSecurityScheme rdf:type rdfs:Class, owl:Class ;
rdfs:label "BasicSecurityScheme" ;
rdfs:subClassOf :SecurityScheme ;
rdfs:comment "Basic authentication security configuration identified by the term basic
(i.e., \"scheme\": \"basic\"
), using an unencrypted username and password."@en .
:BearerSecurityScheme rdf:type rdfs:Class, owl:Class ;
rdfs:label "BearerSecurityScheme" ;
rdfs:subClassOf :SecurityScheme ;
rdfs:comment "Bearer token authentication security configuration identified by the term bearer
(i.e., \"scheme\": \"bearer\"
). This scheme is intended for situations where bearer tokens are used independently of OAuth2. If the oauth2
scheme is specified it is not generally necessary to specify this scheme as well as it is implied. For format
, the value jwt
indicates conformance with RFC7519, jws
indicates conformance with RFC7797, cwt
indicates conformance with RFC8392, and jwe
indicates conformance with !RFC7516, with values for alg
interpreted consistently with those standards. Other formats and algorithms for bearer tokens MAY be specified in vocabulary extensions."@en .
:ComboSecurityScheme rdf:type rdfs:Class, owl:Class ;
rdfs:label "ComboSecurityScheme" ;
rdfs:subClassOf :SecurityScheme ;
rdfs:comment "combo
(i.e., \"scheme\": \"combo\"
). Elements of this scheme define various ways in which other named schemes defined in securityDefinitions
, including other ComboSecurityScheme
definitions, are to be combined to create a new scheme definition. Exactly one of either oneOf
or allOf
MUST be included. Only security scheme definitions which can be used together can be combined with allOf
. For example, it is not possible in general to combine different OAuth 2.0 flows together using allOf
unless one applies to a proxy and one to the endpoint. Note that when multiple named security scheme definitions are listed in a security
field the same semantics apply as in an allOf
combination (and the same limitations on allowable combinations). The oneOf
combination is equivalent to using different security schemes on forms that are otherwise identical. In this sense a oneOf
scheme is not an essential feature but it does avoid redundancy in such cases.cert
(i.e., \"scheme\": \"cert\"
)." .
:DigestSecurityScheme rdf:type rdfs:Class, owl:Class ;
rdfs:label "DigestSecurityScheme" ;
rdfs:subClassOf :SecurityScheme ;
rdfs:comment "Digest authentication security configuration identified by the term digest
(i.e., \"scheme\": \"digest\"
). This scheme is similar to basic authentication but with added features to avoid man-in-the-middle attacks."@en .
:NoSecurityScheme rdf:type rdfs:Class, owl:Class ;
rdfs:label "NoSecurityScheme" ;
rdfs:subClassOf :SecurityScheme ;
rdfs:comment "A security configuration corresponding to identified by the term nosec
(i.e., \"scheme\": \"nosec\"
), indicating there is no authentication or other mechanism required to access the resource."@en .
:OAuth2SecurityScheme rdf:type rdfs:Class, owl:Class ;
rdfs:label "OAuth2SecurityScheme" ;
rdfs:subClassOf :SecurityScheme ;
rdfs:comment "oauth2
(i.e., \"scheme\": \"oauth2\"
). For the code
flow both authorization
and token
MUST be included. For the client
flow token
MUST be included. For the client
flow authorization
MUST NOT be included. The mandatory elements for each flow are summarized in the following table:
Element code
client
authorization
mandatory omit token
mandatory mandatory refresh
optional optional
psk
(i.e., \"scheme\": \"psk\"
). This is meant to identify that a standard is used for pre-shared keys such as TLS-PSK [[rfc4279]], and that the ciphersuite used for keys will be established during protocol negotiation."@en .
# :PoPSecurityScheme rdf:type rdfs:Class, owl:Class ;
# rdfs:label "PoPSecurityScheme" ;
# rdfs:subClassOf :SecurityScheme ;
# rdfs:comment "Proof-of-possession (PoP) token authentication security configuration identified by the term pop
(i.e., \"scheme\": \"pop\"
). Here jwt
indicates conformance with !RFC7519, jws
indicates conformance with !RFC7797, cwt
indicates conformance with !RFC8392, and jwe
indicates conformance with RFC7516, with values for alg
interpreted consistently with those standards. Other formats and algorithms for PoP tokens MAY be specified in vocabulary extensions." .
# :PublicSecurityScheme rdf:type rdfs:Class, owl:Class ;
# rdfs:label "PublicSecurityScheme" ;
# rdfs:subClassOf :SecurityScheme ;
# rdfs:comment "Raw public key asymmetric key security configuration identified by the term public
(i.e., \"scheme\": \"public\"
)." .
:SecurityScheme rdf:type rdfs:Class, owl:Class ;
rdfs:label "SecurityScheme" ;
rdfs:comment "Metadata describing the configuration of a security mechanism. The value assigned to the name scheme
MUST be defined within a Vocabulary included in the Thing Description, either in the standard Vocabulary defined in ยง 5. TD Information Model or in a TD Context Extension.
For all security schemes, any keys, passwords, or other sensitive information directly providing access MUST NOT be stored in the TD and should instead be shared and stored out-of-band via other mechanisms. The purpose of a TD is to describe how to access a Thing if and only if a Consumer already has authorization, and is not meant be used to grant that authorization.
Each security scheme object used in a TD defines a set of requirements to be met before access can be granted. We say a security scheme is satisfied when all its requirements are met. In some cases requirements from multiple security schemes will have to be met before access can be granted.
Security schemes generally may require additional authentication parameters, such as a password or key. The location of this information is indicated by the value associated with the name in
, often in combination with the value associated with name
. The in
name can take one of the following values:
header
:name
.query
:name
.body
:name
. When used in the context of a body
security information location, the value of name
MUST be in the form of a JSON pointer [[!RFC6901]] relative to the root of the input DataSchema
for each interaction it is used with. Since this value is not a fragment identifier, and is not relative to the root of the TD but to whichever data schemas the security scheme is bound to, this value should not start with \"\#
\"; it is a \"pure\" JSON pointer. Since this value is not a fragment identifier, it also does not need to URL-encode special characters. The targeted element may or may not already exist at the specified location in the referenced data schema. If it does not, it will be inserted. This avoids having to duplicate definitions in the data schemas of every interaction. When an element of a data schema indicated by a JSON pointer indicated in a body
locator does not already exist in the indicated schema, it MUST be possible to insert the indicated element at the location indicated by the pointer.. For example, pointing to a key of a Map where that key does not exist in the corresponding Data Schema, the key and its value, which is the credential, would be inserted to the Map at the specified location during the operation execution. On the other hand, pointing to an Array's item with a number as the item index, that number should be outside the range of the Array's already specified items in order to not alter the strict sequence of items. The JSON pointer used in the body
locator MAY use the \"-
\" character to indicate a non-existent array element when it is necessary to insert an element after the last element of an existing array. The element referenced (or created) by a body
security information location MUST be required and of type \"string
\". If name
is not given, it is assumed the entire body is to be used as the security parameter. cookie
:name
. uri
:name
. This is more general than the query
mechanism but more complex. The value uri
SHOULD be specified for in
in a security scheme only if query
is not applicable. The URIs provided in interactions where a security scheme using uri
MUST be a URI template including the defined variable.auto
:auto
is set for the in
field of a SecurityScheme
, then the name
field SHOULD NOT be set. In this case, the application of the SecurityScheme
is subject to the respective specification for the given protocol (e.g. [[!RFC8288]] when using the BasicSecurityScheme
with HTTP).combo
security scheme and allOf
. In some cases parameters may not actually be secret but a user may wish to leave them out of the TD to help protect privacy. As an example of this, some security mechanisms require both a client identifier and a secret key. In theory, the client identifier is public however it may be hard to update and pose a tracking risk. In such a case it can be provided as an additional security parameter so it does not appear in the TD.The names of URI variables declared in a SecurityScheme
MUST be distinct from all other URI variables declared in the TD.