2007-11-26 04:25:20 +03:00
/*
Unix SMB / CIFS implementation .
Authentication utility functions
Copyright ( C ) Andrew Tridgell 1992 - 1998
2010-04-09 11:18:53 +04:00
Copyright ( C ) Andrew Bartlett 2001 - 2010
2007-11-26 04:25:20 +03:00
Copyright ( C ) Jeremy Allison 2000 - 2001
Copyright ( C ) Rafal Szczesniak 2002
Copyright ( C ) Stefan Metzmacher 2005
This program is free software ; you can redistribute it and / or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation ; either version 3 of the License , or
( at your option ) any later version .
This program is distributed in the hope that it will be useful ,
but WITHOUT ANY WARRANTY ; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE . See the
GNU General Public License for more details .
You should have received a copy of the GNU General Public License
along with this program . If not , see < http : //www.gnu.org/licenses/>.
*/
# include "includes.h"
# include "auth/auth.h"
# include "libcli/security/security.h"
# include "libcli/auth/libcli_auth.h"
# include "dsdb/samdb/samdb.h"
# include "auth/credentials/credentials.h"
# include "param/param.h"
2008-04-02 06:53:27 +04:00
# include "auth/session_proto.h"
2007-11-26 04:25:20 +03:00
2008-04-02 06:53:27 +04:00
_PUBLIC_ struct auth_session_info * anonymous_session ( TALLOC_CTX * mem_ctx ,
2007-12-03 19:41:50 +03:00
struct loadparm_context * lp_ctx )
2007-11-26 04:25:20 +03:00
{
NTSTATUS nt_status ;
struct auth_session_info * session_info = NULL ;
2010-04-09 11:18:53 +04:00
nt_status = auth_anonymous_session_info ( mem_ctx , lp_ctx , & session_info ) ;
2007-11-26 04:25:20 +03:00
if ( ! NT_STATUS_IS_OK ( nt_status ) ) {
return NULL ;
}
return session_info ;
}
2008-04-02 06:53:27 +04:00
_PUBLIC_ NTSTATUS auth_generate_session_info ( TALLOC_CTX * mem_ctx ,
2008-12-29 22:24:57 +03:00
struct tevent_context * event_ctx ,
2007-12-03 20:47:35 +03:00
struct loadparm_context * lp_ctx ,
2007-11-26 04:25:20 +03:00
struct auth_serversupplied_info * server_info ,
struct auth_session_info * * _session_info )
{
struct auth_session_info * session_info ;
NTSTATUS nt_status ;
session_info = talloc ( mem_ctx , struct auth_session_info ) ;
NT_STATUS_HAVE_NO_MEMORY ( session_info ) ;
session_info - > server_info = talloc_reference ( session_info , server_info ) ;
/* unless set otherwise, the session key is the user session
* key from the auth subsystem */
session_info - > session_key = server_info - > user_session_key ;
nt_status = security_token_create ( session_info ,
2008-04-17 14:23:44 +04:00
event_ctx ,
2007-12-03 20:47:35 +03:00
lp_ctx ,
2007-11-26 04:25:20 +03:00
server_info - > account_sid ,
server_info - > primary_group_sid ,
server_info - > n_domain_groups ,
server_info - > domain_groups ,
server_info - > authenticated ,
& session_info - > security_token ) ;
NT_STATUS_NOT_OK_RETURN ( nt_status ) ;
session_info - > credentials = NULL ;
* _session_info = session_info ;
return NT_STATUS_OK ;
}
/**
* prints a struct auth_session_info security token to debug output .
*/
void auth_session_info_debug ( int dbg_lev ,
const struct auth_session_info * session_info )
{
if ( ! session_info ) {
DEBUG ( dbg_lev , ( " Session Info: (NULL) \n " ) ) ;
return ;
}
security_token_debug ( dbg_lev , session_info - > security_token ) ;
}