type=page
status=published
title=create-message-security-provider
next=create-module-config.html
prev=create-managed-thread-factory.html
~~~~~~
create-message-security-provider
================================

[[create-message-security-provider-1]][[GSRFM00045]][[create-message-security-provider]]

create-message-security-provider
--------------------------------

enables administrators to create a message security provider, which
specifies how SOAP messages will be secured.

[[sthref421]]

Synopsis

[source,oac_no_warn]
----
asadmin [asadmin-options] create-message-security-provider [--help]
[--target target]
--classname provider_class
[--layer message_layer] [--providertype provider_type]
[--requestauthsource request_auth_source ]
[--requestauthrecipient request_auth_recipient ]
[--responseauthsource response_auth_source ]
[--responseauthrecipient response_auth_recipient ]
[--isdefaultprovider] [--property name=value[:name=value]*] 
provider_name
----

[[sthref422]]

Description

The `create-message-security-provider` subcommand enables the
administrator to create a message security provider for the security
service which specifies how SOAP messages will be secured.

This command is supported in remote mode only.

[[sthref423]]

Options

If an option has a short option name, then the short option precedes the
long option name. Short options have one dash whereas long options have
two dashes.

asadmin-options::
  Options for the `asadmin` utility. For information about these
  options, see the link:asadmin.html#asadmin-1m[`asadmin`(1M)] help page.
`--help`::
`-?`::
  Displays the help text for the subcommand.
`--target`::
  Specifies the target for which you are creating the message security
  provider. The following values are valid: +
  `server`;;
    Creates the provider for the default server instance `server` and is
    the default value.
  `domain`;;
    Creates the provider for the domain.
  cluster_name;;
    Creates the provider for every server instance in the cluster.
  instance_name;;
    Creates the provider for a particular sever instance.
`--classname`::
  Defines the Java implementation class of the provider. Client
  authentication providers must implement the
  `com.sun.enterprise. security.jauth.ClientAuthModule` interface.
  Server-side providers must implement the
  `com.sun.enterprise.security jauth.ServerAuthModule` interface. A
  provider may implement both interfaces, but it must implement the
  interface corresponding to its provider type.
`--layer`::
  The message-layer entity used to define the value of the `auth-layer`
  attribute of `message-security-config` elements. The default is
  `HttpServlet`. Another option is `SOAP`.
`--providertype`::
  Establishes whether the provider is to be used as client
  authentication provider, server authentication provider, or both.
  Valid options for this property include `client`, `server`, or
  `client-server`.
`--requestauthsource`::
  The `auth-source` attribute defines a requirement for message-layer
  sender authentication (e.g. username password) or content
  authentication (e.g. digital signature) to be applied to request
  messages. Possible values are `sender` or `content`. When this
  argument is not specified, source authentication of the request is not
  required.
`--requestauthrecipient`::
  The `auth-recipient` attribute defines a requirement for message-layer
  authentication of the receiver of a message to its sender (e.g. by XML
  encryption). Possible values are `before-content` or `after-content`.
  The default value is `after-content`.
`--responseauthsource`::
  The `auth-source` attribute defines a requirement for message-layer
  sender authentication (e.g. username password) or content
  authentication (e.g. digital signature) to be applied to response
  messages. Possible values are `sender` or `content`. When this option
  is not specified, source authentication of the response is not
  required.
`--responseauthrecipient`::
  The `auth-recipient` attribute defines a requirement for message-layer
  authentication of the receiver of the response message to its sender
  (e.g. by XML encryption). Possible values are `before-content` or
  `after-content`. The default value is `after-content`.
`--isdefaultprovider`::
  The `default-provider` attribute is used to designate the provider as
  the default provider (at the layer) of the type or types identified by
  the `providertype` argument. There is no default associated with this
  option.
`--property`::
  Use this property to pass provider-specific property values to the
  provider when it is initialized. Properties passed in this way might
  include key aliases to be used by the provider to get keys from
  keystores, signing, canonicalization, encryption algorithms, etc. +
  The following properties may be set: +
  `security.config`;;
    Specifies the location of the message security configuration file.
    To point to a configuration file in the domain-dir`/config`
    directory, use the system property
    `${com.sun.aas.instanceRoot}/config/`, for example:
    `${com.sun.aas.instanceRoot}/config/wss-server-config-1.0.xml`. The
    default is domain-dir`/config/ wss-serverconfig-1.0.xml`.
  `debug`;;
    If `true`, enables dumping of server provider debug messages to the
    server log. The default is `false`.
  `dynamic.username. password`;;
    If `true`, signals the provider runtime to collect the user name and
    password from the `CallbackHandler` for each request. If `false`,
    the user name and password for `wsse:UsernameToken`(s) is collected
    once, during module initialization. This property is only applicable
    for a `ClientAuthModule`. The default is `false`.
  `encryption.key.alias`;;
    Specifies the encryption key used by the provider. The key is
    identified by its keystore alias. The default value is `s1as`.
  `signature.key.alias`;;
    Specifies the signature key used by the provider. The key is
    identified by its keystore alias. The default value is `s1as`.

[[sthref424]]

Operands

provider_name::
  The name of the provider used to reference the `provider-config`
  element.

[[sthref425]]

Examples

[[GSRFM507]][[sthref426]]

Example 1   Creating a Message Security Provider

The following example shows how to create a message security provider
for a client.

[source,oac_no_warn]
----
asadmin> create-message-security-provider 
--classname com.sun.enterprise.security.jauth.ClientAuthModule
--providertype client mySecurityProvider
----

[[sthref427]]

Exit Status

0::
  command executed successfully
1::
  error in executing the command

[[sthref428]]

See Also

link:asadmin.html#asadmin-1m[`asadmin`(1M)]

link:delete-message-security-provider.html#delete-message-security-provider-1[`delete-message-security-provider`(1)],
link:list-message-security-providers.html#list-message-security-providers-1[`list-message-security-providers`(1)]


