TSP_OIDC_Generic.xml 15 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238
  1. <!-- MANDATORY: Defines a group of properties that allows the product to use an OpenID
  2. Connect identity provider for user authentication. -->
  3. <!-- Set the values for this group of properties to allow the product access to your existing
  4. OpenID connect identity provider. This external resource must already exist in your
  5. environment and be configured to use for authentication. -->
  6. <crn:instance name="MANDATORY" class="TSP_OIDC_Generic">
  7. <!-- identityProviderType: Specifies the implementation of an OpenID Connect identity
  8. provider. -->
  9. <crn:parameter name="identityProviderType">
  10. <crn:value xsi:type="xsd:string">Generic</crn:value>
  11. </crn:parameter>
  12. <!-- id: Specifies a unique identifier for the authentication namespace. -->
  13. <!-- Use the namespace identifier to distinguish between multiple namespaces. Each namespace
  14. must have a unique identifier. When you select a namespace to use for authentication
  15. in the run-time environment, the identifier is used by the IBM Cognos components.
  16. Changing the namespace ID after the service has been started may invalidate the object
  17. security policies and the Cognos group and role memberships. The use of the colon
  18. in the Namespace ID is not supported. -->
  19. <crn:parameter name="id">
  20. <crn:value xsi:type="xsd:string">MANDATORY</crn:value>
  21. </crn:parameter>
  22. <!-- selectableForAuth: Specifies whether the namespace is selectable for authentication. -->
  23. <!-- If this property is set to true, the namespace will be available for authentication
  24. in the logon page namespace selection prompt. Set this value to false if the namespace
  25. should not be available for selection on the logon page. -->
  26. <crn:parameter name="selectableForAuth">
  27. <crn:value xsi:type="xsd:boolean">true</crn:value>
  28. </crn:parameter>
  29. <!-- claimName: Specifies the name of the claim that will be provided to the target namespace. -->
  30. <!-- A string that represents the name of the claim from the id_token that will be provided
  31. to the target namespace. This value must be a single string value in the id_token
  32. and must exist for all account objects. -->
  33. <crn:parameter name="claimName">
  34. <crn:value xsi:type="xsd:string">MANDATORY</crn:value>
  35. </crn:parameter>
  36. <!-- trustedEnvName: Specifies the environment variable name that will be used to transfer
  37. the claim to the target namespace. -->
  38. <!-- A string that represents the environment variable name that will be used to transfer
  39. the claim to the target namespace. This value is dependent on the target namespace
  40. type and corresponds to how the target namespace will obtain the user's identity.
  41. For example, the LDAP and Active Directory namespace types both expect the user's
  42. identity to be passed in the REMOTE_USER environment variable. -->
  43. <crn:parameter name="trustedEnvName">
  44. <crn:value xsi:type="xsd:string">REMOTE_USER</crn:value>
  45. </crn:parameter>
  46. <!-- redirectNsID: Specifies the namespace ID that will be invoked with the claim obtained
  47. from the OpenID identity provider. -->
  48. <!-- A string that represents the ID of the namespace that will be invoked with the claim
  49. obtained from the OpenID identity provider. This value must match the namespace ID
  50. of a configured namespace (e.g., LDAP, AD, etc). -->
  51. <crn:parameter name="redirectNsID">
  52. <crn:value xsi:type="xsd:string">MANDATORY</crn:value>
  53. </crn:parameter>
  54. <!-- advancedProperties: Specifies a set of advanced properties. -->
  55. <!-- The user needs to provide the name and the value for each advanced property. -->
  56. <crn:parameter name="advancedProperties" opaque="true">
  57. <crn:value xsi:type="cfg:array"/>
  58. </crn:parameter>
  59. <!-- useDiscoveryEndpoint: Specifies whether the Identity Provider returns a discovery
  60. document. -->
  61. <!-- Set this value to true if the Identity Provider supports a discovery document endpoint
  62. and fill out the discovery endpoint configuration group. Set this value to false
  63. if the Identity Provider does not support a discovery document endpoint and fill
  64. out the non-discovery endpoint configuration group. -->
  65. <crn:parameter name="useDiscoveryEndpoint">
  66. <crn:value xsi:type="xsd:boolean">true</crn:value>
  67. </crn:parameter>
  68. <!-- oidcDiscEndpoint: Specifies the OpenID Connect discovery endpoint -->
  69. <!-- The discovery endpoint is used to retrieve the OpenID Connect configuration that
  70. includes the authorization endpoint, token endpoint, jwks endpoint, and issuer. -->
  71. <crn:parameter name="oidcDiscEndpoint">
  72. <crn:value xsi:type="cfg:anyPathURI"></crn:value>
  73. </crn:parameter>
  74. <!-- issuer: Specifies the OpenID claim issuer. -->
  75. <!-- A string that represents the identity provider that issued the claims in the ID token.
  76. This value must match the value of the 'iss' entry in the ID token JSON document. -->
  77. <crn:parameter name="issuer">
  78. <crn:value xsi:type="xsd:string"></crn:value>
  79. </crn:parameter>
  80. <!-- oidcTokenEndpoint: Specifies the OpenID Connect token endpoint, using the following
  81. syntax: https://<hostname:port>/<path> -->
  82. <!-- The token endpoint is used to retrieve the identity token after a successful authentication
  83. to the OpenID Connect identity provider. -->
  84. <crn:parameter name="oidcTokenEndpoint">
  85. <crn:value xsi:type="cfg:anyPathURI"></crn:value>
  86. </crn:parameter>
  87. <!-- oidcAuthEndpoint: Specifies the OpenID Connect authorization endpoint, using the
  88. following syntax: https://<hostname:port>/<path> -->
  89. <!-- The authorization endpoint is a URL that your OpenID Connect identity provider uses
  90. for authentication. In most cases, the URL should use the https scheme. The authorization
  91. endpoint is invoked when users authenticate to the OpenID Connect identity provider. -->
  92. <crn:parameter name="oidcAuthEndpoint">
  93. <crn:value xsi:type="cfg:anyPathURI"></crn:value>
  94. </crn:parameter>
  95. <!-- clientId: Specifies the OpenID Connect client identifier -->
  96. <!-- The client identity that is assigned to the application by the OpenID Connect identity
  97. provider. -->
  98. <crn:parameter name="clientId">
  99. <crn:value xsi:type="xsd:string">MANDATORY</crn:value>
  100. </crn:parameter>
  101. <!-- returnUrl: Return URL that is configured with the OpenID Connect identity provider. -->
  102. <!-- The return URL is invoked by the OpenID Connect identity provider after successfully
  103. authenticating a user. The URL format is https://dispatcherHOST:dispatcherPORT/bi/completeAuth.jsp
  104. or https://webserverHOST:webserverPORT/ibmcognos/bi/completeAuth.jsp. This URL completes
  105. Cognos Analytics authentication using the OpenID Connect identity provider. -->
  106. <crn:parameter name="returnUrl">
  107. <crn:value xsi:type="cfg:anyPathURI">https://host:443/bi/completeAuth.jsp</crn:value>
  108. </crn:parameter>
  109. <!-- authScope: Specifies the scope parameter values provided to the authorize endpoint. -->
  110. <!-- The scope parameter values that will be added to the authorize endpoint URL for authentication.
  111. At a minimum, 'openid' must be included in the list of possible scope values. -->
  112. <crn:parameter name="authScope">
  113. <crn:value xsi:type="xsd:string">openid</crn:value>
  114. </crn:parameter>
  115. <!-- accountClaims: Specifies if the id_token contains all of the account claims. -->
  116. <!-- Set this value to token if the id_token contains all of the user claims. Set this
  117. value to userinfo if an additional call should be made to the userinfo endpoint in
  118. order to retrieve any user claims that are not part of the id_token. -->
  119. <crn:parameter name="accountClaims">
  120. <crn:value xsi:type="xsd:string">token</crn:value>
  121. </crn:parameter>
  122. <!-- tokenEndpointAuth: Specifies how to authenticate to the Identity Provider when invoking
  123. the token endpoint. -->
  124. <!-- Use client secret post if the client id and client secret should be transmitted in
  125. the request body. Use client secret basic if the client id and client secret should
  126. be transmitted in the HTTP header. Use private key JWT if the client id and a JWT
  127. client_assertion that is signed with a private key should be transmitted in the request
  128. body. -->
  129. <crn:parameter name="tokenEndpointAuth">
  130. <crn:value xsi:type="xsd:string">client_secret_post</crn:value>
  131. </crn:parameter>
  132. <!-- clientSecret: Specifies the client secret that is assigned to the application by
  133. the OpenID Connect identity provider. -->
  134. <!-- The client secret that is assigned to the application by the OpenID Connect identity
  135. provider. -->
  136. <crn:parameter name="clientSecret">
  137. <crn:value xsi:type="xsd:string" encrypted="true"></crn:value>
  138. </crn:parameter>
  139. <!-- privateKeyFile: Specifies the file that contains the private signing key. -->
  140. <!-- The file that contains the private signing key in PKCS8 format. It must contain a
  141. single private RSA key of length 2048 bits. -->
  142. <crn:parameter name="privateKeyFile">
  143. <crn:value xsi:type="cfg:filePath"></crn:value>
  144. </crn:parameter>
  145. <!-- privateKeyPassword: Specifies the private key password used to protect the private
  146. signing key. -->
  147. <!-- This password is required to secure the private key. It provides an extra layer of
  148. security by encrypted the private key file using a password. -->
  149. <crn:parameter name="privateKeyPassword">
  150. <crn:value xsi:type="xsd:string" encrypted="true"></crn:value>
  151. </crn:parameter>
  152. <!-- privateKeyId: Specifies the key identifier that should be placed in the JWT header. -->
  153. <!-- The key identifier that will be set in the JWT 'kid' header. Use this configuration
  154. item if your identity provider requires a 'kid'. Leave this value blank if your identity
  155. provider does not require a 'kid'. -->
  156. <crn:parameter name="privateKeyId">
  157. <crn:value xsi:type="xsd:string"></crn:value>
  158. </crn:parameter>
  159. <!-- keyLocation: Specifies the location of the signing public key or certificate. -->
  160. <!-- Set this value to 'File' if the signing certificate is manually downloaded from the
  161. Identity Provider as a certificate and placed on the file system. Set this value
  162. to 'JWKS endpoint' if the Identity Provider supports an endpoint for retrieving id_token
  163. signature keys. Note: if the Identity Provider does not support a discovery document
  164. but provides public keys via a JWKS endpoint, then the JWKS Endpoint must contain
  165. a valid URI for retrieving the public keys. -->
  166. <crn:parameter name="keyLocation">
  167. <crn:value xsi:type="xsd:string">jwks_uri</crn:value>
  168. </crn:parameter>
  169. <!-- idpCertificateFile: Specifies the location of the certificate that is used by the
  170. OpenID Connect identity provider to sign the identity token. -->
  171. <!-- A path to the file that contains the certificate used by the identity provider to
  172. sign the JSON Web Token. The path must include the certificate file name and be accessible
  173. to the running instance of Cognos Analytics. The certificate must be in a PEM format,
  174. include only the public key certificate, and include the begin and end certificate
  175. lines. The certificate file cannot be placed in the configuration/certs directory. -->
  176. <crn:parameter name="idpCertificateFile">
  177. <crn:value xsi:type="cfg:filePath"></crn:value>
  178. </crn:parameter>
  179. <!-- jwksEndpoint: Specifies the OpenID Connect endpoint for retrieving JWT signing keys. -->
  180. <!-- The JWKS endpoint is a URL that your OpenID Connect identity provider uses to provide
  181. signing key data. In most cases, the URL should use the https scheme. The JWKS endpoint
  182. is invoked when validating an id_token returned from the identity provider. -->
  183. <crn:parameter name="jwksEndpoint">
  184. <crn:value xsi:type="cfg:anyPathURI"></crn:value>
  185. </crn:parameter>
  186. <!-- pgStrategy: Specifies how to get the user's identity when using the password grant
  187. flow. -->
  188. <!-- Set this value to 'ID token' if all user claims are returned in the id_token. Set
  189. this value to 'ID token and userinfo endpoint' if an id_token is returned from the
  190. password grant flow but does not contain all of the user claims. Set this value to
  191. 'Userinfo endpoint' if the id_token does not contain any user claims and if the user
  192. claims should be retrieved from the userinfo endpoint. Set this value to 'Unsupported'
  193. if the Identity Provider does not support the password grant flow. -->
  194. <crn:parameter name="pgStrategy">
  195. <crn:value xsi:type="xsd:string">idToken</crn:value>
  196. </crn:parameter>
  197. <!-- pgInclScope: Specifies that the scope should be included when using the password
  198. grant flow. -->
  199. <!-- Set this value to true to indicate that the scope parameter should be included as
  200. part of the query string for the password grant flow. Set this value to false to
  201. indicate that the scope should be omitted from the query string for the password
  202. grant flow. -->
  203. <crn:parameter name="pgInclScope">
  204. <crn:value xsi:type="xsd:boolean">true</crn:value>
  205. </crn:parameter>
  206. <!-- pgAddParams: Specifies any additional parameters that are required for the password
  207. grant flow. -->
  208. <!-- Set this value to reflect any additional parameters that should be included as part
  209. of the query string for the password grant flow. The parameter must begin with an
  210. '&' and must be urlencoded so that it can be safely inserted into the query string.
  211. For example, if the 'resource=https://ca.ibm.com' parameter is required in the query
  212. string, it must be entered as: '&resource=https%3A%2F%2Fca.ibm.com'. -->
  213. <crn:parameter name="pgAddParams">
  214. <crn:value xsi:type="xsd:string"></crn:value>
  215. </crn:parameter>
  216. <!-- tcStrategy: Specifies the information that should be stored for scheduling jobs. -->
  217. <!-- Set this value to 'Credentials' if the Identity Provider supports the password grant
  218. and returns a valid id_token that contains all of the user claims in the response.
  219. Set this value to 'Credentials and ID token' if the Identity Provider supports the
  220. password grant flow but does not return a valid id_token in the response or if the
  221. id_token does not contain all of the user claims. Set this value to 'Refresh token'
  222. if the Identity Provider supports the refresh token flow, provides a non-expiring
  223. refresh token, and returns a valid id_token that contains all of the user claims
  224. from the refresh token flow. Set this value to 'ID token only' if the Identity Provider
  225. does not support the password grant nor refresh token flows (Note: when set to 'ID
  226. token only', it will not be possible to verify that the user is still exists and
  227. is enabled in the Identity Provider). -->
  228. <crn:parameter name="tcStrategy">
  229. <crn:value xsi:type="xsd:string">credentials</crn:value>
  230. </crn:parameter>
  231. <!-- tcAccountClaims: Specifies if the id_token contains all of the account claims. -->
  232. <!-- Set this value to 'ID token' if the id_token returned from the token endpoint contains
  233. all of the user claims. Set this value to 'Userinfo endpoint' if an additional call
  234. to the userinfo endpoint is required in order to obtain all of the user claims. -->
  235. <crn:parameter name="tcAccountClaims">
  236. <crn:value xsi:type="xsd:string">id_token</crn:value>
  237. </crn:parameter>
  238. </crn:instance>