summaryrefslogtreecommitdiffstats
path: root/src/windows/identity/doc/cred_aquisition.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/windows/identity/doc/cred_aquisition.h')
-rw-r--r--src/windows/identity/doc/cred_aquisition.h325
1 files changed, 0 insertions, 325 deletions
diff --git a/src/windows/identity/doc/cred_aquisition.h b/src/windows/identity/doc/cred_aquisition.h
deleted file mode 100644
index 0161f74f1..000000000
--- a/src/windows/identity/doc/cred_aquisition.h
+++ /dev/null
@@ -1,325 +0,0 @@
-/*
- * Copyright (c) 2005 Massachusetts Institute of Technology
- * Copyright (c) 2007 Secure Endpoints Inc.
- *
- * Permission is hereby granted, free of charge, to any person
- * obtaining a copy of this software and associated documentation
- * files (the "Software"), to deal in the Software without
- * restriction, including without limitation the rights to use, copy,
- * modify, merge, publish, distribute, sublicense, and/or sell copies
- * of the Software, and to permit persons to whom the Software is
- * furnished to do so, subject to the following conditions:
- *
- * The above copyright notice and this permission notice shall be
- * included in all copies or substantial portions of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
- * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
- * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
- * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS
- * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
- * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
- * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
- * SOFTWARE.
- */
-
-/* $Id$ */
-
-/*! \page cred_acq Managed credential acquisition
-
- Credential providers and identity providers must participate in
- managed credential acquisition in order to respond to the user's
- requests to obtain new credentials for an identity or to renew
- credentials for an existing identity.
-
- There are two major processes that result in managed credential
- acuqisition. One is the acquisition of credentials, while the
- other is credential renewal. During a renewal, existing
- credentials are used to obtain new credentials which expire later
- than the existing credential. Typically, the identity provider
- performs the task of obtaining renewed initial credentials while
- the other credential providers obtain new credentials based on
- these initial credentials.
-
- \section cred_acq_new New Credentials
-
- When a user initiates the process of initial credential
- acquisition, Network Identity Manager broadcasts a
- <::KMSG_CRED,::KMSG_CRED_NEW_CREDS> message. Credential providers
- which need to participate in the credential acquisition should
- respond to this message as detailed in \ref cred_acq_handle.
-
- \section cred_acq_renew Renew Credentials
-
- Network Identity Manager broadcasts a
- <::KMSG_CRED,::KMSG_CRED_RENEW_CREDS> message to initiate the
- process of renewing credentials. This may be triggered
- automatically or by a user action. Credential providers which
- need to participate in the renewal should respond to this message
- as detailed in \ref cred_acq_handle.
-
- The following pages provide detailed information:
-
- - \subpage cred_acq_new_resp
- - \subpage cred_acq_dlgproc
- */
-
-/*! \page cred_acq_new_resp Handling new credentials acquisition
-
- The process of acquiring credentials happens as follows:
-
- - Network Identity Manager creates a ::khui_new_creds object and a
- credentials acquisition window.
-
- - <::KMSG_CRED,::KMSG_CRED_RENEW_CREDS> or
- <::KMSG_CRED,::KMSG_CRED_NEW_CREDS> is sent to all the
- credentials providers.
-
- - The credential providers create the panels (where appropriate)
- for customizing their respective credential types. The type,
- panel and any dependency information is populated into a
- ::khui_new_creds_by_type structure and added to the
- ::khui_new_creds structure. (See khui_cw_add_type()).
-
- - <::KMSG_CRED, ::KMSG_CRED_DIALOG_PRESTART> is sent to all the
- credentials providers.
-
- - <::KMSG_CRED, ::KMSG_CRED_DIALOG_START> is sent to all the
- credentials providers.
-
- - The dialog for obtaining credentials is displayed.
- Notifications between the main dialog and the individual panels
- are done through ::KHUI_WM_NC_NOTIFY messages to the dialog
- procedures.
-
- - Once the dialog processing is done, a ::WMNC_DIALOG_PREPROCESS
- message is sent to the dialog procedure.
-
- - Network Identity Manager posts
- <::KMSG_CRED,::KMSG_CRED_DIALOG_PROCESS> message to all the
- credentials providers. Each provider should check if the user
- cancelled the dialog or indicated that the new credentials
- should be obtained and act accordingly. The \c result field of
- the ::khui_new_creds structure will be set to either
- ::KHUI_NC_RESULT_PROCESS or ::KHUI_NC_RESULT_CANCEL to indicate
- whether the user wishes to acquire credentials or cancel the
- operation.
-
- - Once all the plug-ins have processed the <::KMSG_CRED,
- ::KMSG_CRED_DIALOG_PROCESS> message, the application checks
- whether the new credentials dialog should continue processing,
- or whether the dialog should be closed. If the dialog should
- continue processing, then the dialog returns to the state it was
- in prior to the ::WMNC_DIALOG_PREPROCESS message was sent. If
- the dialog should be closed, then a <::KMSG_CRED,
- ::KMSG_CRED_END> message is sent.
-
- - A <::KMSG_CRED, ::KMSG_CRED_END> message signals the end of the
- credentials acquisition process. Each credentials provider is
- responsible for removing the ::khui_new_creds_by_type structre
- from the ::khui_new_creds structure and freeing up any resources
- it allocated earlier in preparation for obtaining new
- credentials.
-
- \section cred_acq_handle Responding to credential acquisition messages
-
- \subsection cred_acq_handle_init <::KMSG_CRED,::KMSG_CRED_NEW_CREDS> and <::KMSG_CRED,::KMSG_CRED_RENEW_CREDS> Messages
-
- The credential acquisition messages are
- <::KMSG_CRED,::KMSG_CRED_NEW_CREDS> and <::KMSG_CRED,
- ::KMSG_CRED_RENEW_CREDS>. They are structured as follows:
-
- - \b type : ::KMSG_CRED
- - \b subtype: ::KMSG_CRED_NEW_CREDS or ::KMSG_CRED_RENEW_CREDS
- - \b uparam : 0 (unused)
- - \b vparam : a pointer to a ::khui_new_creds structure.
-
- The \a vparam parameter of the message, as shown above, is a
- pointer to a ::khui_new_creds structure. You can use the \a
- subtype field of this structure to determine whether this is a new
- credentials acquisition or a renewal.
-
- In response to this message, a credentials provider is expected to
- provide a configuration panel which the user can use to customize
- how the credentials of this type are to be obtained. The panel is
- described by the ::khui_new_creds_by_type structure.
-
- \subsubsection cred_acq_panel_spec Specifying the credentials type panel
-
- The credentials type panel is used by the user to customize how
- credentials of the specified type are to be obtained. The
- ::khui_new_creds_by_type structure that describes the panel can be
- used to specify a number of parameters that guide how the panel is
- to be displayed in the new credentials acquisition dialog.
-
- The \a name field defines a localized string that will be
- displayed in the tab control that houses the panel. If it is \a
- NULL, then the name of the credentials type is used. Optionally,
- an icon can be specified in the \a icon field which will appear
- alongside the name. A tooltip may be provided in the \a tooltip
- field which will be displayed when the user hovers the mouse over
- the tab.
-
- In order to assert that the tab appears at a specific position in
- the list of tabs, you can specify a positive number in the \a
- ordinal field. Zero does not count as a valid ordinal. The
- panels with positive ordinals are arranged first in increasing
- order of ordinal (conflicts are resolved by sorting along the \a
- name). Then the panels without a positive ordianl are arranged
- behind these in increasing order of \a name.
-
- Currently, the credentials provider must specify a dialog template
- that will be used to create the embedded dialog for configuring
- new credentials for the type. This is done by setting the
- khui_new_creds_by_type::h_module, khui_new_creds_by_type::dlg_proc
- and khui_new_creds_by_type::dlg_template fields.
-
- Following is example code which suggests how this could be done:
-
- \code
- // Message handling code for KMSG_CRED_NEW_CREDS or
- // KMSG_CRED_INIT_CREDS
- ...
- khui_new_creds * c;
- khui_new_creds_by_type * t;
-
- c = (khui_new_creds *) vparam;
- t = PMALLOC(sizeof(*t));
- ZeroMemory(t, sizeof(*t));
-
- t->type = my_cred_type;
-
- // set look and feel params
- t->ordinal = 3; // third in line
- t->name = L"My panel name";
- t->icon = LoadIcon(my_hInstance, MAKEINTRESOURCE(IDI_PANEL_ICON));
- t->tooltip = L"Configure credentials of my type";
-
- // specify the dialog template to use
- t->h_module = my_hInstance;
- t->dlg_proc = my_dialog_procedure;
- t->dlg_template = MAKEINTRESOURCE(IDD_NEW_CREDS);
-
- if(KHM_FAILED(khui_cw_add_type(c,t))) {
- // handle error
- }
- \endcode
-
- It is important to note that the ::khui_new_creds_by_type pointer
- that is passed into khui_cw_add_type() points to an allocated
- block of memory which should remain in memory until
- <::KMSG_CRED,::KMSG_CRED_END> message is received.
-
- For information on how the dialog procedure should be written, see
- \ref cred_acq_dlgproc .
-
-*/
-
-/*! \page cred_acq_dlgproc Writing the dialog procedure for a cred type panel
-
- Once each credentials provider has had a chance to add a
- credentials type panel for the new credentials dialog, the
- application will attempt to create all the dialog panels. It will
- use the dialog template and the dialog procedure specified in the
- \c dlg_proc and \c dlg_template members of the
- ::khui_new_creds_by_type structure.
-
- The credentials type panel will be an ordinary dialog that is
- created as a child of the new credentials window. Therefore, the
- dialog template should have the WS_CHILD style and the
- WS_EX_CONTROLPARENT extended style set so that the main dialog
- procedure can correctly navigate the child dialog.
-
- \section cred_acq_dlgmsg Handling Messages
-
- \subsection cred_acq_dlg_WM_INITDIALOG WM_INITDIALOG
-
- When the application creates a credentials type panel dialog, it
- passes a pointer to the ::khui_new_creds structure as the \c
- LPARAM parameter. This can be used to query for the credentials
- type panel for the plug-in, as follows:
-
- \code
-
- // Handler for WM_INITDIALOG:
- // HWND hwnd, WPARAM wParam and LPARAM lParam
-
- khui_new_creds * nc = NULL;
- khui_new_creds_by_type * nct = NULL;
-
- // We can define and use a structure like the following to
- // maintain the data that will be used to drive the dialog user
- // interface and to store credentials type settings:
- struct nc_dialog_data * d = NULL;
-
- nc = (khui_new_creds *) lParam;
-
- // Now we can use nc to query for our credentials type structure
- khui_cw_find_type(nc, credtype_id, &nct);
-
- assert(nct);
-
- // The dialog data structure should live until we receive
- // WM_DESTROY.
- d = malloc(sizeof(*d));
- ZeroMemory(d, sizeof(*d));
-
- d->nc = nc;
- d->nct = nct;
-
- // Store it as our user data for the dialog.
- SetWindowLongPtr(hwnd, DWLP_USER, (LPARAM) d);
-
- // The aux member of the khui_new_creds_by_type structure is
- // reserved for use by the credentials provider. We can use it to
- // store our dialog data. This way, the dialog procedure and the
- // plug-in thread can both access it and use it to store
- // credential options for use when obtaining credentials. The
- // dialog and the dialog data exist until KMSG_CRED_END is sent.
- nct->aux = (LPARAM) d;
-
- // We should return FALSE here to indicate that we don't want to
- // set keyboard focus to this dialog yet. The application will
- // attempt to create all the credentials type panels as well as
- // the other child dialogs used for the new credentials opeartion.
- return FALSE;
-
- \endcode
-
- \subsection cred_acq_dlg_WM_NC_NOTIFY WM_NC_NOTIFY
-
- ::WM_NC_NOTIFY is a special window message that Network Identity
- Manager uses to communicate with credentials type panels. The
- messages are listed in the ::khui_wm_nc_notifications enumeration.
- The format of the message is as follows:
-
- - uMsg : KHUI_WM_NC_NOTIFY
- - HIWORD(wParam) : one of ::khui_wm_nc_notifications
- - LPARAM : pointer to the ::khui_new_creds structure (except where noted)
-
- The ::WM_NC_NOTIFY notifications that a credentials provider is
- expected to handle are the following:
-
- - ::WMNC_IDENTITY_CHANGE
-
- \copydoc WMNC_IDENTITY_CHANGE
-
- - ::WMNC_DIALOG_MOVE
-
- \copydoc WMNC_DIALOG_MOVE
-
- - ::WMNC_UPDATE_CREDTEXT
-
- \copydoc WMNC_UPDATE_CREDTEXT
-
- - ::WMNC_CREDTEXT_LINK
-
- \copydoc WMNC_CREDTEXT_LINK
-
- - ::WMNC_DIALOG_PREPROCESS
-
- \copydoc WMNC_DIALOG_PREPROCESS
-
- \section cred_acq_other Other notes
-
-*/