Graphical identification and authentication
From Wikipedia, the free encyclopedia
The graphical identification and authentication (GINA) library is a component of some Microsoft Windows operating systems that provides secure authentication and interactive logon services.
GINA is a dynamically linked library that is loaded in the context of the Winlogon process when the machine is started. It is responsible for handling the secure attention sequence, typically Control-Alt-Delete, and interacting with the user when this sequence is received. GINA is also responsible for starting initial processes for a user (such as the Windows Shell) when they first log on.
In Windows Vista, GINA has been entirely replaced by Credential Providers, which allow for significantly increased flexibility in supporting multiple credential collection methods. GINA libraries do not work with Windows Vista.
[edit] Overview
A default GINA library, MSGINA.DLL, is provided by Microsoft as part of the operating system, and offers the following features:
- Authentication against Windows domain servers with a supplied user name/password combination.
- Displaying of a legal notice to the user prior to presenting the logon prompt.
- Automatic Logon, allowing for a user name and password to be stored and used in place of an interactive logon prompt. Automatic logon can also be configured to execute only a certain number of times before reverting to interactive logon. In older versions of Windows NT, the password could only be stored in plain text in the registry; support for using the Local Security Authority's private storage capabilities was introduced in Windows NT 4.0 Workstation Service Pack 3 and Windows NT Server 3.51.
- "Security Options" dialog when the user is logged on, which provides options to shut down, log off, change the password, start the Task Manager, and lock the workstation.
Winlogon can be configured to use a different GINA, providing for non-standard authentication methods such as smart card readers or identification based on biometrics, or to provide an alternate visual interface to the default GINA. Developers who implement a replacement GINA are required to provide implementations for a set of API calls which cover functionality such as displaying a "workstation locked" dialog, processing the secure attention sequence in various user states, responding to queries as to whether or not locking the workstation is an allowed action, supporting the collection of user credentials on Terminal Services-based connections, and interacting with a screensaver. A custom GINA could be made entirely from scratch, or just be the original GINA with modifications. A custom GINA can be specified by placing a string named GinaDLL in the registry location HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon
. The Winlogon component is solely responsible for calling these APIs in the GINA library.
When the Winlogon process starts, it compares its version number to that which is supported by the loaded GINA library. If the GINA library is of a higher version than Winlogon, Windows will not boot. This is done because a GINA library written for a given version of Winlogon will expect a certain set of API calls to be provided by Winlogon.
Support for replaceable GINA DLLs was introduced with Windows NT Server 3.51 and Windows NT Workstation 4.0 SP3. Successive versions of Windows have introduced additional functionality into Winlogon, resulting in additional functionality that can be implemented by a replacement GINA. Windows 2000, for example, introduced support for displaying status windows about the current state to the user (e.g. "Applying computer settings..."), and starting applications in the user's context; this facilitates restarting Windows Explorer automatically if it crashes, as well as starting the Task Manager. Windows XP introduced some support for Remote Desktop and a more interactive simplified full-screen logon.
[edit] See also
[edit] External links
- Winlogon and GINA, developer information on how the login components interact
- Customizing GINA Part 1, Developer tutorial for writing a custom GINA.
- Customizing GINA Part 2, Developer tutorial for writing a custom GINA.
- pGINA.org- Home of a free GPL'ed GINA with Plug-ins
- TCGINA, a TrueCrypt plug-in for encrypting a Windows user profile