Commit c0e1b5b1 authored by Frank Bergmann's avatar Frank Bergmann

- OpenACS 5.9

parent 4c47c83e
......@@ -2,24 +2,24 @@
<!-- Generated by the OpenACS Package Manager -->
<package key="acs-authentication" url="http://openacs.org/repository/apm/packages/acs-authentication" type="apm_service">
<package-name>Authentication</package-name>
<pretty-plural>Authentication</pretty-plural>
<package-name>ACS Authentication</package-name>
<pretty-plural>ACS Authentication</pretty-plural>
<initial-install-p>t</initial-install-p>
<singleton-p>t</singleton-p>
<version name="5.10.0d1" url="http://openacs.org/repository/download/apm/acs-authentication-5.10.0d1.apm">
<version name="5.9.0" url="http://openacs.org/repository/download/apm/acs-authentication-5.9.0.apm">
<owner url="mailto:lars@collaboraid.biz">Lars Pind</owner>
<summary>Authentication, account management, and related functionality.</summary>
<release-date>2013-09-08</release-date>
<release-date>2015-10-04</release-date>
<vendor url="http://www.collaboraid.biz">Collaboraid</vendor>
<maturity>3</maturity>
<license url="http://www.gnu.org/copyleft/gpl.html">GPL version 2</license>
<description format="text/html">Implements authentication-related security functions for OpenACS, including password, account and session management, bulk account creation etc. Provides a contract based interface for different authentication methods such as PAM or LDAP based authentication.</description>
<provides url="acs-authentication" version="5.10.0d1"/>
<requires url="acs-kernel" version="5.10.0d1"/>
<requires url="acs-service-contract" version="5.10.0d1"/>
<requires url="acs-mail-lite" version="5.10.0d1"/>
<provides url="acs-authentication" version="5.9.0"/>
<requires url="acs-kernel" version="5.9.0"/>
<requires url="acs-service-contract" version="5.9.0"/>
<requires url="acs-mail-lite" version="5.9.0"/>
<callbacks>
<callback type="after-install" proc="auth::package_install"/>
......
......@@ -72,3 +72,9 @@ set direction [string map {asc -increasing desc -decreasing} $direction]
if {$orderby_column ne ""} {
template::multirow -ulevel 2 -local sort users $direction $orderby_column
}
# Local variables:
# mode: tcl
# tcl-indent-level: 4
# indent-tabs-mode: nil
# End:
......@@ -147,3 +147,9 @@ set authority_id $selected_authority_id
if {![info exists orderby]} {
set orderby ""
}
# Local variables:
# mode: tcl
# tcl-indent-level: 4
# indent-tabs-mode: nil
# End:
......@@ -665,3 +665,9 @@ ad_proc -private auth::search::delete_contract {} {
} {
acs_sc::contract::delete -name "auth_search"
}
# Local variables:
# mode: tcl
# tcl-indent-level: 4
# indent-tabs-mode: nil
# End:
......@@ -241,8 +241,7 @@ ad_proc -public auth::authenticate {
} {
set result(auth_status) failed_to_connect
set result(auth_message) $errmsg
global errorInfo
ns_log Error "auth::authenticate: error invoking authentication driver for authority_id = $authority_id: $errorInfo"
ns_log Error "auth::authenticate: error invoking authentication driver for authority_id = $authority_id: $::errorInfo"
}
# Returns:
......@@ -1061,8 +1060,7 @@ ad_proc -private auth::create_local_account_helper {
} on_error {
# we got an error. log it and signal failure.
global errorInfo
ns_log Error "Problem creating a new user: $errorInfo"
ns_log Error "Problem creating a new user: $::errorInfo"
set error_p 1
}
......@@ -1197,8 +1195,7 @@ ad_proc -public auth::update_local_account {
if { $error_p } {
set result(update_status) "failed_to_connect"
set result(update_message) [_ acs-subsite.Error_update_account_info]
global errorInfo
ns_log Error "Error updating local account.\n$errorInfo"
ns_log Error "Error updating local account.\n$::errorInfo"
return [array get result]
}
......@@ -1424,8 +1421,10 @@ ad_proc -private auth::check_local_account_status {
switch $member_state {
approved {
set PasswordExpirationDays [parameter::get -parameter PasswordExpirationDays -package_id [ad_acs_kernel_id] -default 0]
set PasswordExpirationDays [parameter::get \
-parameter PasswordExpirationDays \
-package_id [ad_acs_kernel_id] \
-default 0]
if { $email_verified_p == "f" } {
if { !$no_dialogue_p } {
......@@ -1434,17 +1433,23 @@ ad_proc -private auth::check_local_account_status {
with_catch errmsg {
auth::send_email_verification_email -user_id $user_id
} {
global errorInfo
ns_log Error "auth::check_local_account_status: Error sending out email verification email to email $email:\n$errorInfo"
ns_log Error "auth::check_local_account_status: Error sending out email verification email to email $email:\n$::errorInfo"
set result(account_message) [_ acs-subsite.Error_sending_verification_mail]
}
}
} elseif { [acs_user::ScreenName] eq "require" && $screen_name eq "" } {
} elseif { [acs_user::ScreenName] eq "require"
&& $screen_name eq ""
} {
set message "Please enter a screen name now."
set result(account_url) [export_vars -no_empty -base "[subsite::get_element -element url]user/basic-info-update" { message return_url {edit_p 1} }]
} elseif { $PasswordExpirationDays > 0 && \
($password_age_days eq "" || $password_age_days > $PasswordExpirationDays) } {
set result(account_url) [export_vars -no_empty \
-base "[subsite::get_element -element url]user/basic-info-update" {
message return_url {edit_p 1}
}]
} elseif { $PasswordExpirationDays > 0
&& ($password_age_days eq "" || $password_age_days > $PasswordExpirationDays)
} {
set message [_ acs-subsite.Password_regular_change_now]
set result(account_url) [export_vars -base "[subsite::get_element -element url]user/password-update" { return_url message }]
} else {
......@@ -1571,12 +1576,14 @@ ad_proc -private auth::validate_account_info {
# TODO: When doing RBM's parameter, make sure that we still require both first_names and last_names, or none of them
if { ([info exists user(first_names)] && $user(first_names) ne "")
&& [string first "<" $user(first_names)] != -1 } {
&& [string first "<" $user(first_names)] != -1
} {
set element_messages(first_names) [_ acs-subsite.lt_You_cant_have_a_lt_in]
}
if { ([info exists user(last_name)] && $user(last_name) ne "")
&& [string first "<" $user(last_name)] != -1 } {
&& [string first "<" $user(last_name)] != -1
} {
set element_messages(last_name) [_ acs-subsite.lt_You_cant_have_a_lt_in_1]
}
......@@ -1855,3 +1862,9 @@ ad_proc -private auth::user_info::GetUserInfo {
-operation GetUserInfo \
-call_args [list $username $parameters]]
}
# Local variables:
# mode: tcl
# tcl-indent-level: 4
# indent-tabs-mode: nil
# End:
......@@ -326,8 +326,7 @@ ad_proc -public auth::authority::batch_sync {
with_catch errmsg {
array set doc_result [auth::sync::GetDocument -authority_id $authority_id]
} {
global errorInfo
ns_log Error "Error getting sync document:\n$errorInfo"
ns_log Error "Error getting sync document:\n$::errorInfo"
set doc_result(doc_status) failed_to_connect
set doc_result(doc_message) $errmsg
}
......@@ -373,8 +372,7 @@ ad_proc -public auth::authority::batch_sync {
$ack_doc
}
} {
global errorInfo
ns_log Error "Error processing sync document:\n$errorInfo"
ns_log Error "Error processing sync document:\n$::errorInfo"
set message "Error processing sync document: $errmsg"
}
} else {
......@@ -564,3 +562,9 @@ ad_proc -public auth::authority::local {} {
} {
return [auth::authority::get_id -short_name "local"]
}
# Local variables:
# mode: tcl
# tcl-indent-level: 4
# indent-tabs-mode: nil
# End:
......@@ -37,8 +37,7 @@ ad_proc -public auth::driver::get_parameters {
-impl_id $impl_id \
-operation GetParameters]
} {
global errorInfo
ns_log Error "Error getting parameters for impl_id $impl_id: $errmsg\n$errorInfo"
ns_log Error "Error getting parameters for impl_id $impl_id: $errmsg\n$::errorInfo"
}
return $parameters
}
......@@ -111,3 +110,9 @@ ad_proc -public auth::driver::GetParameters {
-operation GetParameters]
}
# Local variables:
# mode: tcl
# tcl-indent-level: 4
# indent-tabs-mode: nil
# End:
......@@ -278,8 +278,7 @@ ad_proc -private auth::local::password::ChangePassword {
if { [catch { ad_change_password $user_id $new_password } errmsg] } {
set result(password_status) "change_error"
global errorInfo
ns_log Error "Error changing local password for username $username, user_id $user_id: \n$errorInfo"
ns_log Error "Error changing local password for username $username, user_id $user_id: \n$::errorInfo"
return [array get result]
}
......@@ -311,8 +310,7 @@ ad_proc -private auth::local::password::ChangePassword {
-subject $subject \
-body $body
} {
global errorInfo
ns_log Error "Error sending out password changed notification to account owner with user_id $user(user_id), email $user(email): $errmsg\n$errorInfo"
ns_log Error "Error sending out password changed notification to account owner with user_id $user(user_id), email $user(email): $errmsg\n$::errorInfo"
}
}
......@@ -501,23 +499,30 @@ ad_proc -private auth::local::registration::Register {
# LARS TODO: Move this out of the local driver and into the auth framework
# Send password confirmation email to user
if { [set email_reg_confirm_p [parameter::get -parameter EmailRegistrationConfirmationToUserP -package_id [ad_conn subsite_id] -default 1]] != 0 } {
if { $generated_pwd_p || \
[parameter::get -parameter RegistrationProvidesRandomPasswordP -package_id [ad_conn subsite_id] -default 0] || \
$email_reg_confirm_p } {
if { [set email_reg_confirm_p [parameter::get \
-parameter EmailRegistrationConfirmationToUserP \
-package_id [ad_conn subsite_id] -default 1]] != 0
} {
if { $generated_pwd_p
|| [parameter::get \
-parameter RegistrationProvidesRandomPasswordP \
-package_id [ad_conn subsite_id] -default 0]
|| $email_reg_confirm_p
} {
with_catch errmsg {
auth::password::email_password \
-username $username \
-authority_id $authority_id \
-password $password \
-from [parameter::get -parameter NewRegistrationEmailAddress -package_id [ad_conn subsite_id] -default [ad_system_owner]] \
-from [parameter::get \
-parameter NewRegistrationEmailAddress \
-package_id [ad_conn subsite_id] \
-default [ad_system_owner]] \
-subject_msg_key "acs-subsite.email_subject_Registration_password" \
-body_msg_key "acs-subsite.email_body_Registration_password"
} {
# We don't fail hard here, just log an error
global errorInfo
ns_log Error "Error sending registration confirmation to $email.\n$errorInfo"
ns_log Error "Error sending registration confirmation to $email.\n$::errorInfo"
}
}
}
......@@ -547,8 +552,7 @@ ad_proc -private auth::local::registration::Register {
-body [lang::message::lookup $admin_locale acs-subsite.lt_first_names_last_name]
} {
# We don't fail hard here, just log an error
global errorInfo
ns_log Error "Error sending admin notification to $admin_email.\n$errorInfo"
ns_log Error "Error sending admin notification to $admin_email.\n$::errorInfo"
}
}
......@@ -640,3 +644,9 @@ ad_proc -private auth::local::search::GetParameters {} {
# No parameters
return [list]
}
# Local variables:
# mode: tcl
# tcl-indent-level: 4
# indent-tabs-mode: nil
# End:
......@@ -64,8 +64,7 @@ ad_proc -public auth::password::can_change_p {
with_catch errmsg {
set result_p [auth::password::CanChangePassword -authority_id $authority_id]
} {
global errorInfo
ns_log Error "Error invoking CanChangePassword operation for authority_id $authority_id:\n$errorInfo"
ns_log Error "Error invoking CanChangePassword operation for authority_id $authority_id:\n$::errorInfo"
}
return $result_p
}
......@@ -109,8 +108,7 @@ ad_proc -public auth::password::change {
} {
set result(password_status) failed_to_connect
set result(password_message) $errmsg
global errorInfo
ns_log Error "Error invoking password management driver for authority_id = $user(authority_id):\n$errorInfo"
ns_log Error "Error invoking password management driver for authority_id = $user(authority_id):\n$::errorInfo"
}
# Check the result code and provide canned responses
......@@ -295,8 +293,7 @@ ad_proc -public auth::password::can_retrieve_p {
set result_p [auth::password::CanRetrievePassword \
-authority_id $authority_id]
} {
global errorInfo
ns_log Error "Error invoking CanRetrievePassword operation for authority_id $authority_id:\n$errorInfo"
ns_log Error "Error invoking CanRetrievePassword operation for authority_id $authority_id:\n$::errorInfo"
return 0
}
return $result_p
......@@ -337,8 +334,7 @@ ad_proc -public auth::password::retrieve {
} {
set result(password_status) failed_to_connect
set result(password_message) "Error invoking the password management driver."
global errorInfo
ns_log Error "Error invoking password management driver for authority_id = $authority_id: $errorInfo"
ns_log Error "Error invoking password management driver for authority_id = $authority_id: $::errorInfo"
}
# Check the result code and provide canned responses
......@@ -357,8 +353,7 @@ ad_proc -public auth::password::retrieve {
# We could not inform the user of his email - we failed
set result(password_status) "failed_to_connect"
set result(password_message) [_ acs-subsite.Error_sending_mail]
global errorInfo
ns_log Error "We had an error sending out email with new password to username $username, authority $authority_id:\n$errorInfo"
ns_log Error "We had an error sending out email with new password to username $username, authority $authority_id:\n$::errorInfo"
}
}
if { ![info exists result(password_message)] || $result(password_message) eq "" } {
......@@ -399,8 +394,7 @@ ad_proc -public auth::password::can_reset_p {
set result_p [auth::password::CanResetPassword \
-authority_id $authority_id]
} {
global errorInfo
ns_log Error "Error invoking CanResetPassword operation for authority_id $authority_id:\n$errorInfo"
ns_log Error "Error invoking CanResetPassword operation for authority_id $authority_id:\n$::errorInfo"
}
return $result_p
}
......@@ -455,11 +449,12 @@ ad_proc -public auth::password::reset {
# Check the result code and provide canned responses
switch $result(password_status) {
ok {
if { ([info exists result(password)] && $result(password) ne "") && \
(!$admin_p || [parameter::get \
-parameter EmailChangedPasswordP \
-package_id [ad_conn subsite_id] \
-default 1]) } {
if { [info exists result(password)] && $result(password) ne ""
&& (!$admin_p || [parameter::get \
-parameter EmailChangedPasswordP \
-package_id [ad_conn subsite_id] \
-default 1])
} {
# We have retrieved or reset a forgotten password that we should email to the user
with_catch errmsg {
auth::password::email_password \
......@@ -472,8 +467,7 @@ ad_proc -public auth::password::reset {
# We could not inform the user of his email - we failed
set result(password_status) "failed_to_connect"
set result(password_message) [_ acs-subsite.Error_sending_mail]
global errorInfo
ns_log Error "We had an error sending out email with new password to username $username, authority $authority_id:\n$errorInfo"
ns_log Error "We had an error sending out email with new password to username $username, authority $authority_id:\n$::errorInfo"
}
}
if { ![info exists result(password_message)] || $result(password_message) eq "" } {
......@@ -770,3 +764,9 @@ ad_proc -private auth::password::ResetPassword {
$parameters \
$authority_id]]
}
# Local variables:
# mode: tcl
# tcl-indent-level: 4
# indent-tabs-mode: nil
# End:
......@@ -21,3 +21,9 @@ ad_schedule_proc \
-schedule_proc ns_schedule_daily \
[list 1 0] \
auth::sync::sweeper
# Local variables:
# mode: tcl
# tcl-indent-level: 4
# indent-tabs-mode: nil
# End:
......@@ -194,8 +194,7 @@ Job message : $job(message)
To view the complete log, please visit\n$job(log_url)"
} {
# We don't fail hard here, just log an error
global errorInfo
ns_log Error "Error sending registration confirmation to [ad_system_owner].\n$errorInfo"
ns_log Error "Error sending registration confirmation to [ad_system_owner].\n$::errorInfo"
}
}
......@@ -455,10 +454,9 @@ ad_proc -public auth::sync::job::action {
}
} {
# Get errorInfo and log it
global errorInfo
ns_log Error "Error during batch syncrhonization job:\n$errorInfo"
ns_log Error "Error during batch syncrhonization job:\n$::errorInfo"
set success_p 0
set result(message) $errorInfo
set result(message) $::errorInfo
}
}
......@@ -723,9 +721,9 @@ ad_proc -private auth::sync::get_doc::http::GetDocument {
array set param $parameters
if { ($param(SnapshotURL) ne "" && [clock format [clock seconds] -format "%d"] eq "01") || \
$param(IncrementalURL) eq "" } {
if { ($param(SnapshotURL) ne "" && [clock format [clock seconds] -format "%d"] eq "01")
|| $param(IncrementalURL) eq ""
} {
# On the first day of the month, we get a snapshot
set url $param(SnapshotURL)
set result(snapshot_p) "t"
......@@ -801,9 +799,9 @@ ad_proc -private auth::sync::get_doc::file::GetDocument {
array set param $parameters
if { ($param(SnapshotPath) ne "" && [clock format [clock seconds] -format "%d"] eq "01") || \
$param(IncrementalPath) eq "" } {
if { ($param(SnapshotPath) ne "" && [clock format [clock seconds] -format "%d"] eq "01")
|| $param(IncrementalPath) eq ""
} {
# On the first day of the month, we get a snapshot
set path $param(SnapshotPath)
set result(snapshot_p) "t"
......@@ -988,3 +986,9 @@ ad_proc -public auth::sync::process_doc::ims::GetAcknowledgementDocument {
return $doc
}
# Local variables:
# mode: tcl
# tcl-indent-level: 4
# indent-tabs-mode: nil
# End:
......@@ -356,10 +356,7 @@ aa_register_case \
Test the auth::password::change proc.
} {
aa_stub acs_mail_lite::send {
acs_mail_lite::send__arg_parser
global ns_sendmail_to
set ns_sendmail_to $to_addr
set ::ns_sendmail_to $to_addr
}
aa_run_with_teardown \
......@@ -376,8 +373,7 @@ aa_register_case \
-secret_answer "no_answer"]
set user_id $user_info(user_id)
global ns_sendmail_to
set ns_sendmail_to {ns_sendmail_UNCALLED}
set ::ns_sendmail_to {ns_sendmail_UNCALLED}
parameter::set_value -parameter EmailAccountOwnerOnPasswordChangeP -package_id [ad_acs_kernel_id] -value 1
aa_true "Send email" [parameter::get -parameter EmailAccountOwnerOnPasswordChangeP -package_id [ad_acs_kernel_id] -default 1]
......@@ -394,8 +390,8 @@ aa_register_case \
"ok"
# Check that user gets email about changed password
aa_equals "Email sent to user" $ns_sendmail_to $email
set ns_sendmail_to {}
aa_equals "Email sent to user" $::ns_sendmail_to $email
set ::ns_sendmail_to {}
# check that the new password is actually set correctly
set password_correct_p [ad_check_password $user_id $new_password]
......@@ -731,10 +727,7 @@ aa_register_case \
Test acs-kernel.EmailAccountOwnerOnPasswordChangeP parameter
} {
aa_stub acs_mail_lite::send {
acs_mail_lite::send__arg_parser
global ns_sendmail_to
set ns_sendmail_to $to_addr
set ::ns_sendmail_to $to_addr
}
aa_run_with_teardown \
......@@ -742,8 +735,7 @@ aa_register_case \
-test_code {
parameter::set_value -parameter EmailAccountOwnerOnPasswordChangeP -package_id [ad_acs_kernel_id] -value 1
global ns_sendmail_to
set ns_sendmail_to {}
set ::ns_sendmail_to {}
# Create a dummy local user
set username [ad_generate_random_string]
......@@ -779,8 +771,8 @@ aa_register_case \
}
# Check that we get email
aa_equals "Email sent to user" $ns_sendmail_to $email
set ns_sendmail_to {ns_sendmail_UNCALLED}
aa_equals "Email sent to user" $::ns_sendmail_to $email
set ::ns_sendmail_to {ns_sendmail_UNCALLED}
# Set parameter to false
parameter::set_value -parameter EmailAccountOwnerOnPasswordChangeP -package_id [ad_acs_kernel_id] -value 0
......@@ -795,7 +787,7 @@ aa_register_case \
aa_equals "Password change OK" $result(password_status) "ok"
# Check that we do not get an email
aa_equals "Email NOT sent to user" $ns_sendmail_to {ns_sendmail_UNCALLED}
aa_equals "Email NOT sent to user" $::ns_sendmail_to {ns_sendmail_UNCALLED}
ad_parameter_cache -delete [ad_acs_kernel_id] EmailAccountOwnerOnPasswordChangeP
}
......@@ -827,3 +819,9 @@ ad_proc -private auth::test::get_password_vars {
db_1row select_vars {} -column_array test_vars
}
# Local variables:
# mode: tcl
# tcl-indent-level: 4
# indent-tabs-mode: nil
# End:
......@@ -501,7 +501,6 @@ aa_register_case -cats {api} sync_batch_ims_example_doc {
Test IMS Enterprise 1.1 batch sync with the XML document from the specification.
} {
aa_stub acs_sc::invoke {
acs_sc::invoke__arg_parser
if { $contract eq "auth_sync_retrieve" && $operation eq "GetDocument" } {
array set result {
......@@ -684,7 +683,6 @@ aa_register_case -cats {api} sync_batch_ims_test {
Test IMS Enterprise 1.1 batch sync with a constructed document which actually works
} {
aa_stub acs_sc::invoke {
acs_sc::invoke__arg_parser
if { $contract eq "auth_sync_retrieve" && $operation eq "GetDocument" } {
array set result {
......@@ -980,3 +978,9 @@ aa_register_case -cats {api web} sync_file_get_document {
aa_true "result.doc_message is empty" [expr {$result(doc_message) eq ""}]
aa_equals "result.document is 'success'" $result(document) [template::util::read_file $path]
}
# Local variables:
# mode: tcl
# tcl-indent-level: 4
# indent-tabs-mode: nil
# End:
<html><head><meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"><title>External Authentication</title><meta name="generator" content="DocBook XSL Stylesheets V1.68.1"><link rel="home" href="index.html" title="External Authentication"><link rel="next" href="ext-auth-install.html" title="Installation"><link rel="stylesheet" href="openacs.css" type="text/css"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><a href="http://openacs.org"><img src="/doc/images/alex.jpg" border="0" alt="Alex logo"></a><table width="100%" summary="Navigation header" border="0"><tr><td width="20%" align="left"> </td><th width="60%" align="center"></th><td width="20%" align="right"> <a accesskey="n" href="ext-auth-install.html">Next</a></td></tr></table><hr></div><div class="book" lang="en"><div class="titlepage"><div><div><h1 class="title"><a name="id2410693"></a>External Authentication</h1></div></div><hr></div><div class="toc"><p><b>Table of Contents</b></p><dl><dt><span class="article"><a href="ext-auth-install.html">Installation</a></span></dt><dd><dl><dt><span class="sect1"><a href="ext-auth-pam-install.html">Using Pluggable Authentication Modules (PAM) with OpenACS</a></span></dt><dt><span class="sect1"><a href="ext-auth-ldap-install.html">Using LDAP/Active Directory with OpenACS</a></span></dt><dt><span class="sect1"><a href="configure-batch-sync.html">Configure Batch Synchronization</a></span></dt></dl></dd><dt><span class="article"><a href="ext-auth-design.html">Design</a></span></dt><dd><dl><dt><span class="sect1"><a href="ims-sync-driver-design.html">IMS Sync driver design</a></span></dt></dl></dd></dl></div></div><div class="navfooter"><hr><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"> </td><td width="20%" align="center"></td><td width="40%" align="right"> <a accesskey="n" href="ext-auth-install.html">Next</a></td></tr><tr><td width="40%" align="left"> </td><td width="20%" align="center"></td><td width="40%" align="right"> Installation</td></tr></table><hr><address><a href="mailto:docs@openacs.org">docs@openacs.org</a></address></div><a name="comments"></a><center><a href="http://openacs.org/doc/current/index.html#comments">View comments on this page at openacs.org</a></center></body></html>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<meta name="generator" content=
"HTML Tidy for Mac OS X (vers 31 October 2006 - Apple Inc. build 15.15), see www.w3.org">
<meta http-equiv="Content-Type" content=
"text/html; charset=us-ascii">
<title>External Authentication</title>
<meta name="generator" content="DocBook XSL Stylesheets V1.68.1">
<link rel="home" href="index.html" title="External Authentication">
<link rel="next" href="ext-auth-install.html" title="Installation">
<link rel="stylesheet" href="openacs.css" type="text/css">
</head>
<body bgcolor="white" text="black" link="#0000FF" vlink="#840084"
alink="#0000FF">
<div class="book" lang="en">
<div class="titlepage">
<div>
<div>
<h1 class="title"><a name="id2410693" id="id2410693"></a>External
Authentication</h1>
</div>
</div>
<hr></div>
<div class="toc">
<dl>
<dt><span class="article"><a href=
"ext-auth-install.html">Installation</a></span></dt>
<dd>
<dl>
<dt><span class="sect1"><a href="ext-auth-pam-install.html">Using
Pluggable Authentication Modules (PAM) with OpenACS</a></span></dt>
<dt><span class="sect1"><a href="ext-auth-ldap-install.html">Using
LDAP/Active Directory with OpenACS</a></span></dt>
<dt><span class="sect1"><a href=
"configure-batch-sync.html">Configure Batch
Synchronization</a></span></dt>
</dl>
</dd>
<dt><span class="article"><a href=
"ext-auth-design.html">Design</a></span></dt>
<dd>
<dl>
<dt><span class="sect1"><a href="ims-sync-driver-design.html">IMS
Sync driver design</a></span></dt>
</dl>
</dd>
</dl>
</div>
</div>
<h2>Release Notes</h2>
<p>Please file bugs in the <a href="http://openacs.org/bugtracker/openacs/">Bug Tracker</a>.</p>
<hr>
<address><a href=
"mailto:docs@openacs.org">docs@openacs.org</a></address>
</div>
</body>
</html>
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment