Po pierwszym wydaniu ColdFusion z silnikiem jRun, wśród wielu użytkowników pojawiło się jedno pytanie: W jaki sposób uwierzytelniamy się w naszym środowisku Windows AD? W tym czasie (o ile dobrze pamiętam), program cfc został swobodnie udostępniony przez firmę Macromedia, która utworzyła obiekt Java, używając jednego lub więcej plików klas Java, które zostały udostępnione wraz z jRun (odpowiedni kod funkcji komponentu pojawia się na końcu ta wiadomość została przypisana) i wykonała "proces uwierzytelniania". Zakładam, że nasz mały personel nie był jedynym programistą, który używał tego kodu przez lata.ColdFusion 10 Active Directory Authentication
Używamy tego kodu dla wersji 6-9 serwera CF. Kod działał dobrze, ale z CF 10 i eliminacją jRun jako bazowego serwera Java, kod przestał działać, ponieważ plik klasy nie jest dołączony do serwera Tomcat. Czy są inni, którzy są lub byli w podobnej sytuacji? Jeśli tak, w jaki sposób wprowadziłeś przejście do wersji CF 10 i nadal uwierzytelniałeś się w usłudze Microsoft Active Directory?
W naszym konkretnym środowisku biznesowym protokół LDAP nie jest skonfigurowany do uwierzytelniania, więc uwierzytelnianie w oparciu o protokół LDAP nie jest dla nas opcją, a kontrola LDAP leży poza zakresem naszego małego działu (który jest obsługiwany przez centralny ośrodek IT poza naszą sferą; wpływu). Jeśli chodzi o nasze lokalne serwery, uruchamiamy Windows Server 2008 R2, IIS 7.5, JRE 1.7 64 bit i ColdFusion 10 SE 64 bit. Jeśli ktokolwiek ma jakieś pomysły, chciałbym je przeczytać.
fragment kodu następuje
<!--- Authenticates the user and outputs true on success and false on failure. --->
<CFFUNCTION NAME="authenticateUser" ACCESS="REMOTE" OUTPUT="yes" STATIC="yes" HINT="Authenticates the user.">
<CFARGUMENT NAME="userid" TYPE="string" REQUIRED="true" />
<CFARGUMENT NAME="passwd" TYPE="string" REQUIRED="true" />
<CFARGUMENT NAME="domain" TYPE="string" REQUIRED="true" />
<CFTRY>
<CFSCRIPT>
ntauth = createObject("java", "jrun.security.NTAuth");
ntauth.init(arguments.domain);
// authenticateUser throws an exception if it fails,
// so we don't have anything specific here
ntauth.authenticateUser(arguments.userid, arguments.passwd);
auth = true;
</CFSCRIPT>
<CFCATCH>
<CFSET auth = false>
</CFCATCH>
</CFTRY>
<CFRETURN AUTH>
</CFFUNCTION>
Skoro używasz IIS, czy możesz po prostu zająć się uwierzytelnianiem? –
Zobacz odpowiedź podaną tutaj: http://stackoverflow.com/a/2320369/492335 można użyć "coldfusion.security.NTAuthentication" zamiast "jrun.security.NTAuth"? – duncan