I am stuck in user authentication with micronaut application authenticate function not accepting httpRequest param
I'm getting an error
Class 'AuthenticationProviderUserPassword' is not abstract and does not implement abstract member public abstract fun authenticate(authenticationRequest: AuthenticationRequest<(raw) Any!, (raw) Any!>!): Publisher! defined in io.micronaut.security.authentication.Authenticatio
Service:
package example.micronaut.services
import io.micronaut.http.HttpRequest
import io.micronaut.security.authentication.AuthenticationFailed
import io.micronaut.security.authentication.AuthenticationProvider
import io.micronaut.security.authentication.AuthenticationRequest
import io.micronaut.security.authentication.AuthenticationResponse
import io.micronaut.security.authentication.UserDetails
import io.reactivex.Flowable
import org.reactivestreams.Publisher
import java.util.*
import javax.inject.Singleton
@Singleton // <1>
class AuthenticationProviderUserPassword : AuthenticationProvider { // <2>
override fun authenticate(httpRequest: HttpRequest<*>?, authenticationRequest: AuthenticationRequest<*, *>?): Publisher<AuthenticationResponse> {
if (authenticationRequest != null && authenticationRequest.identity != null && authenticationRequest.secret != null) {
if (authenticationRequest.identity == "sherlock" && authenticationRequest.secret == "password") {
return Flowable.just<AuthenticationResponse>(UserDetails(authenticationRequest.identity as String, ArrayList()))
}
}
return Flowable.just<AuthenticationResponse>(AuthenticationFailed())
}
}
My build.gradle
plugins {
id "org.jetbrains.kotlin.jvm" version "1.3.50"
id "org.jetbrains.kotlin.kapt" version "1.3.50"
id "org.jetbrains.kotlin.plugin.allopen" version "1.3.50"
id "com.github.johnrengelman.shadow" version "5.2.0"
id "application"
}
version "0.1"
group "example.micronaut"
repositories {
mavenCentral()
maven { url "https://jcenter.bintray.com" }
}
configurations {
// for dependencies that are needed for development only
developmentOnly
}
dependencies {
implementation platform("io.micronaut:micronaut-bom:$micronautVersion")
implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk8:${kotlinVersion}"
implementation "org.jetbrains.kotlin:kotlin-reflect:${kotlinVersion}"
implementation "io.micronaut:micronaut-runtime"
implementation "javax.annotation:javax.annotation-api"
implementation "io.micronaut:micronaut-http-server-netty"
implementation "io.micronaut:micronaut-http-client"
implementation "io.micronaut:micronaut-security-session"
kapt platform("io.micronaut:micronaut-bom:$micronautVersion")
kapt "io.micronaut:micronaut-inject-java"
kapt "io.micronaut:micronaut-validation"
kaptTest platform("io.micronaut:micronaut-bom:$micronautVersion")
kaptTest "io.micronaut:micronaut-inject-java"
runtimeOnly "com.fasterxml.jackson.module:jackson-module-kotlin:2.9.8"
runtimeOnly "ch.qos.logback:logback-classic:1.2.3"
testImplementation platform("io.micronaut:micronaut-bom:$micronautVersion")
testImplementation "io.micronaut.test:micronaut-test-kotlintest"
testImplementation "io.mockk:mockk:1.9.3"
testImplementation "io.kotlintest:kotlintest-runner-junit5:3.3.2"
implementation 'junit:junit:4.12'
compile "io.micronaut.configuration:micronaut-hibernate-jpa"
compile "io.micronaut.configuration:micronaut-hibernate-validator"
compileOnly "jakarta.persistence:jakarta.persistence-api:2.2.2"
annotationProcessor "io.micronaut.data:micronaut-data-processor:1.0.2"
runtime "com.h2database:h2"
runtime "io.micronaut.configuration:micronaut-jdbc-tomcat"
}
test.classpath += configurations.developmentOnly
mainClassName = "example.micronaut.Application"
test {
useJUnitPlatform()
}
allOpen {
annotation("io.micronaut.aop.Around")
}
compileKotlin {
kotlinOptions {
jvmTarget = '1.8'
//Will retain parameter names for Java reflection
javaParameters = true
}
}
compileTestKotlin {
kotlinOptions {
jvmTarget = '1.8'
javaParameters = true
}
}
shadowJar {
mergeServiceFiles()
}
tasks.withType(JavaExec) {
classpath += configurations.developmentOnly
jvmArgs('-noverify', '-XX:TieredStopAtLevel=1', '-Dcom.sun.management.jmxremote')
}
The docs you are looking at are compatible with more recent versions of the interface than you are using. You appear to be using the one at https://github.com/micronaut-projects/micronaut-security/blob/78169cb6927d10dcc6ebc2f6ecb96efb26b9585b/security/src/main/java/io/micronaut/security/authentication/AuthenticationProvider.java#L39 which is why your code won't compile. 2.0RC1 looks like https://github.com/micronaut-projects/micronaut-security/blob/d5ecfc200cf27bd92ec7ce7b3760f5c264ec2647/security/src/main/java/io/micronaut/security/authentication/AuthenticationProvider.java#L44.