Igor Pechtchanski wrote:
On Mon, 18 Jul 2005, H. Henning Schmidt wrote:
I am developing a server application that accepts logins from a client
over a proprietary protocol.
I want to let clients login (username/password) before allowing anything
else. I want to let them use username/password information as it is
stored in the regular system user database, so I do not need to maintain
another such database. On Unix this would be /etc/passwd or
/etc/shadoww and the associated libraray calls.
However, on my Cygwin box, the /etc/passwd (as created by mkpasswd) does
not contain the password. Instead the appropriate field reads
unused_by_nt. After googling along for a while I have understood that
this is done so that the real login/security info can be maintained by
the regular windows system. Fine. But how do I get to it? I have not
found any example/explanation that answers this question:
given two const char* variables user and password, how can I find out if
this combination is a valid login on this current Windows/Cygwin box?
This might be a pute Windows issue (as oposed to Cygwin) ... however,
with a Linux-only knowledge of system calls, I have no clue how to
approach this anyways.
How about looking at the source of some program that actually does such
authentication? Searching for the string "cygwin" in auth-passwd.c in
openssh sources is one approach.
Igor
Thank you for this hint. So cygwin_logon_user() is the call I need.
Apparently this is one of the hidden cygwin_*() functions that are *not*
documented in the API docs (http://cygwin.com/cygwin-api/cygwin-api.html).
Easy enough to use though.
;Henning
--
Unsubscribe info: http://cygwin.com/ml/#unsubscribe-simple
Problem reports: http://cygwin.com/problems.html
Documentation: http://cygwin.com/docs.html
FAQ: http://cygwin.com/faq/