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]
----
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]
----
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)]


