Unable to authenticate in Jhipster - java

I'm create an application using Jhipster stack and development on Windows 10, here is application config
application {
config {
baseName xxx
applicationType monolith
packageName com.xxx
authenticationType jwt
prodDatabaseType mysql
devDatabaseType mysql
buildTool gradle
cacheProvider redis
clientFramework angularX
serverPort 8090
websocket spring-websocket
}
entities *
}
The problem is I can't even login to the default account or register the new one.
I tried to find the solution and got that someone put -Djdk.io.File.enableADS=true into VM options will work but I'm not. Especially, this error only occur on Windows, I tried to run this app without any modifier on Macos and it's working normally. But Macos is not my primary development enviroment then I have to make it work on Windows, thanks
Jhipster info:
<summary>.yo-rc.json file</summary>
{
"generator-jhipster": {
"applicationIndex": 0,
"applicationType": "monolith",
"authenticationType": "jwt",
"baseName": "xxx",
"blueprints": [],
"buildTool": "gradle",
"cacheProvider": "redis",
"clientFramework": "angularX",
"clientPackageManager": "npm",
"clientTheme": "none",
"clientThemeVariant": "",
"creationTimestamp": 1652962669893,
"databaseType": "sql",
"devDatabaseType": "mysql",
"devServerPort": 4200,
"dtoSuffix": "DTO",
"enableGradleEnterprise": false,
"enableHibernateCache": true,
"enableSwaggerCodegen": false,
"enableTranslation": true,
"entities": ["Movie", "Actor", "Category", "Country", "Manufacturer", "Link"],
"entitySuffix": "",
"gradleEnterpriseHost": "",
"jhiPrefix": "jhi",
"jhipsterVersion": "7.8.1",
"jwtSecretKey": "YourJWTSecretKeyWasReplacedByThisMeaninglessTextByTheJHipsterInfoCommandForObviousSecurityReasons",
"languages": ["en"],
"lastLiquibaseTimestamp": 1652963029000,
"messageBroker": false,
"nativeLanguage": "en",
"otherModules": [],
"packageFolder": "com/xxx",
"packageName": "com.xxx",
"pages": [],
"prodDatabaseType": "mysql",
"reactive": false,
"searchEngine": false,
"serverPort": "8090",
"serviceDiscoveryType": false,
"skipCheckLengthOfIdentifier": false,
"skipFakeData": false,
"skipUserManagement": false,
"testFrameworks": [],
"websocket": "spring-websocket",
"withAdminUi": true
}
}
##### **Environment and Tools**
openjdk version "11.0.15" 2022-04-19
OpenJDK Runtime Environment Temurin-11.0.15+10 (build 11.0.15+10)
OpenJDK 64-Bit Server VM Temurin-11.0.15+10 (build 11.0.15+10, mixed mode)
git version 2.33.0.windows.2
node: v16.15.1
npm: 8.11.0
Docker version 20.10.17, build 100c701
Docker Compose version v2.6.1
Here is the error log It's long then I created a gist.

I found the solution, in the configurations, tomcat has been excluded, I remove that line and change undertow to tomcat then it's work. Thanks!

Related

Unable to push docker image to Nexus

I am running Nexus OSS version 3.29.2-02 and I am experiencing some weird behavior. I am building various images at a CI level (GitLab) and I am pushing them to a custom repository.
For the most part everything works OK and I have no issues tagging and pushing my produced images. Lately though, one of the projects that produces Docker images fails to push, with the following error:
$ TAGGED=${NEXUS_DOCKER_URL}/${BASE_IMAGE_NAME}:snapshot-MR${CI_MERGE_REQUEST_IID}
$ docker tag ${BASE_IMAGE_NAME}:latest ${TAGGED}
$ docker push ${TAGGED}
The push refers to repository [<custom-repository-url>/<image-name:tag>]
cade37b0f9c9: Preparing
578ec024f17c: Preparing
fe0b994190e8: Preparing
b24d08ca4359: Preparing
9a14db3b513b: Preparing
777b2c648970: Preparing
777b2c648970: Waiting
b24d08ca4359: Layer already exists
9a14db3b513b: Layer already exists
777b2c648970: Layer already exists
fe0b994190e8: Pushed
cade37b0f9c9: Pushed
578ec024f17c: Pushed
[DEPRECATION NOTICE] registry v2 schema1 support will be removed in an upcoming release. Please contact admins of the <custom-repository-url> registry NOW to avoid future disruption.
errors:
blob unknown: blob unknown to registry
blob unknown: blob unknown to registry
ERROR: Job failed: exit code 1
I have tried debugging this behavior as well as search online for a solution but I have yet to find anything. It seems that for some reason, this specific Docker image cannot be uploaded. I have tried the same procedure from both a local machine as well as from stateless CI builders and the behavior is consistent i.e. I was able to push it only once and then the process kept failing.
For reference my Dockerfile is the following:
FROM <custom-repository-url>/adoptopenjdk/openjdk11:jre-11.0.10_9-alpine
WORKDIR /home/app
COPY build/libs/email-service.jar application.jar
# Set the appropriate timezone
RUN apk add --no-cache tzdata && \
cp /usr/share/zoneinfo/America/New_York /etc/localtime && \
echo "America/New_York" > /etc/timezone
EXPOSE 8080
CMD java -jar ${OPTS} application.jar
Which is quite straightforward and does not hide anything complicated. I initially thought that the problem could have been attributed to using a proxied based image (i.e FROM) but this is done of several other projects without any issues.
I have tried also checking Nexus's logs and the only thing I see is the following:
2021-02-05 17:12:27,441+0000 ERROR [qtp1025847496-15765] ci-deploy org.sonatype.nexus.repository.docker.internal.orient.V2ManifestUtilImpl - Manifest refers to missing layer: sha256:66db482b5034f8eda0b18533d4eddb0012f4940bf3d348b08ac3bac8486bb2ee for: fts/marketing/email-service/snapshot-MR40 in repository RepositoryImpl$$EnhancerByGuice$$4d5af99c{type=hosted, format=docker, name='docker-hosted-s3'}
2021-02-05 17:12:27,443+0000 ERROR [qtp1025847496-15765] ci-deploy org.sonatype.nexus.repository.docker.internal.orient.V2ManifestUtilImpl - Manifest refers to missing layer: sha256:2ec25ba939258edb2e85293896c5126478d79fe416d3b60feb20426755bcea5a for: fts/marketing/email-service/snapshot-MR40 in repository RepositoryImpl$$EnhancerByGuice$$4d5af99c{type=hosted, format=docker, name='docker-hosted-s3'}
2021-02-05 17:12:27,445+0000 WARN [qtp1025847496-15765] ci-deploy org.sonatype.nexus.repository.docker.internal.V2Handlers - Error: PUT /v2/fts/marketing/email-service/manifests/snapshot-MR40: 400 - org.sonatype.nexus.repository.docker.internal.V2Exception: Invalid Manifest
So my question are:
What does this error really mean? I don't find it very useful:
errors:
blob unknown: blob unknown to registry
blob unknown: blob unknown to registry
What is really causing this behavior and how can I address the problem?
Note (not that it should make any difference), the image is a dockerized Micronaut application, using the latest version of the framework.
For reference, the output of docker inspect for said image is the following:
[{
"Id": "sha256:fec226a68e3b744fc792e47d3235e67f06b17883e60df52c8ae82c5a7ba9750f",
"RepoTags": [
"<custom-repository-url>/fts/marketing/email-service:mes-33-3",
"test-mes-33:latest"
],
"RepoDigests": [],
"Parent": "sha256:ddd8e2235b60d7636283097fc61e5971c32b3006ee52105e2a77e7d4ee7e709e",
"Comment": "",
"Created": "2021-02-06T21:06:59.987108458Z",
"Container": "8ab70692b75aac21d0866816aa52af5febf620744282d71a39dce55f81fe3e44",
"ContainerConfig": {
"Hostname": "8ab70692b75a",
"Domainname": "",
"User": "",
"AttachStdin": false,
"AttachStdout": false,
"AttachStderr": false,
"ExposedPorts": {
"8080/tcp": {}
},
"Tty": false,
"OpenStdin": false,
"StdinOnce": false,
"Env": [
"PATH=/opt/java/openjdk/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin",
"LANG=en_US.UTF-8",
"LANGUAGE=en_US:en",
"LC_ALL=en_US.UTF-8",
"JAVA_VERSION=jdk-11.0.10+9",
"JAVA_HOME=/opt/java/openjdk"
],
"Cmd": [
"/bin/sh",
"-c",
"#(nop) ",
"CMD [\"/bin/sh\" \"-c\" \"java -jar ${OPTS} application.jar\"]"
],
"Image": "sha256:ddd8e2235b60d7636283097fc61e5971c32b3006ee52105e2a77e7d4ee7e709e",
"Volumes": null,
"WorkingDir": "/home/app",
"Entrypoint": null,
"OnBuild": null,
"Labels": {}
},
"DockerVersion": "19.03.13",
"Author": "",
"Config": {
"Hostname": "",
"Domainname": "",
"User": "",
"AttachStdin": false,
"AttachStdout": false,
"AttachStderr": false,
"ExposedPorts": {
"8080/tcp": {}
},
"Tty": false,
"OpenStdin": false,
"StdinOnce": false,
"Env": [
"PATH=/opt/java/openjdk/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin",
"LANG=en_US.UTF-8",
"LANGUAGE=en_US:en",
"LC_ALL=en_US.UTF-8",
"JAVA_VERSION=jdk-11.0.10+9",
"JAVA_HOME=/opt/java/openjdk"
],
"Cmd": [
"/bin/sh",
"-c",
"java -jar ${OPTS} application.jar"
],
"Image": "sha256:ddd8e2235b60d7636283097fc61e5971c32b3006ee52105e2a77e7d4ee7e709e",
"Volumes": null,
"WorkingDir": "/home/app",
"Entrypoint": null,
"OnBuild": null,
"Labels": null
},
"Architecture": "amd64",
"Os": "linux",
"Size": 220998577,
"VirtualSize": 220998577,
"GraphDriver": {
"Data": {
"LowerDir": "/var/lib/docker/overlay2/78561c2e477b099a547bead4ea17b677bb01376fc1ed1ce1cd942157d35c0329/diff:/var/lib/docker/overlay2/af8ac4feace0cbecd616e2a02850ec366715aaa5ac8ad143cb633f52b0f6fbe2/diff:/var/lib/docker/overlay2/211a8e68c833f664de5d304838b8cd98b8e5e790f79da8b8839a4d52d02a8d66/diff:/var/lib/docker/overlay2/cbc98e7274ff8266425aed31989066ff7c5f7a46d9334b84110fc57d8b1d942c/diff:/var/lib/docker/overlay2/c773dedbc53b81c2e68ad61811445c0377271db3af526dbf5a6aa6671d0b2b71/diff",
"MergedDir": "/var/lib/docker/overlay2/04240d9f745382480e52e04d8088de6f65a9ece0cd6e091953087f3d06fcc93c/merged",
"UpperDir": "/var/lib/docker/overlay2/04240d9f745382480e52e04d8088de6f65a9ece0cd6e091953087f3d06fcc93c/diff",
"WorkDir": "/var/lib/docker/overlay2/04240d9f745382480e52e04d8088de6f65a9ece0cd6e091953087f3d06fcc93c/work"
},
"Name": "overlay2"
},
"RootFS": {
"Type": "layers",
"Layers": [
"sha256:777b2c648970480f50f5b4d0af8f9a8ea798eea43dbcf40ce4a8c7118736bdcf",
"sha256:9a14db3b513b928759670c6a9b15fd89a8ad9bf222c75e0998c21bcb04e25e48",
"sha256:b24d08ca43598c9ea44f73c3f5dfca2b4897c475b2cc480bac98cccc42dce10f",
"sha256:11d1fa1ad1ef523c60369c11b1096baf89c8d43afa53813e84c73d0926848598",
"sha256:30001f69fd3b3b08fdbf6d843e38d0a16d0e46e84923f92480ac88603c0eb680",
"sha256:b2d3c5f57d1d626a7501b8871f548fd7e1f7625fe05c1885c27ec415b14e9915"
]
},
"Metadata": {
"LastTagTime": "2021-02-06T23:08:30.440032169+02:00"
}
}]
A docker registry (in your case Nexus) throws that error whenever it encounters a missing/invalid layer in the image.
Nexus used to have difficulty with foreign layers but that shouldn't be a problem since you are running quite a recent version.
I would think that you only need to enable "foreign layer caching" in Nexus to get this working.
It'd be helpful to include the output of docker manifest inspect <custom-repository-url>/adoptopenjdk/openjdk11:jre-11.0.10_9-alpine and docker manifest inspect ${TAGGED}
Docker registry API spec

Is migration needed from "old" onenote API to new microsoft graph api?

I've build a Java library to get the interaction of java application with Microsoft Onenote.
I recently discovered that the API has changed:
For getting a specific Sectionthe url was
https://www.onenote.com/api/v1.0/me/notes/sections/SECTION_ID
And is now:
https://graph.microsoft.com/v1.0/me/onenote/sections/SECTION_ID
Both are "v1.0" while both have a different signature :
Onenote API:
{
"#odata.context": "https://www.onenote.com/api/v1.0/$metadata#me/notes/sections(parentNotebook(id,name,self),parentSectionGroup(id,name,self))/$entity",
"id": "SECTION_ID",
"self": "https://www.onenote.com/api/v1.0/me/notes/sections/SECTION_ID",
"createdTime": "2014-05-29T08:56:57.223Z",
"name": "Adresses",
"createdBy": "xxxx",
"lastModifiedBy": "xxxx",
"lastModifiedTime": "2014-06-10T12:55:22.41Z",
"isDefault": false,
Microsoft Graph API:
{
"#odata.context": "https://graph.microsoft.com/v1.0/$metadata#users('xxx%40live.com')/onenote/sections/$entity",
"id": "SECTION_ID",
"self": "https://graph.microsoft.com/v1.0/users/xxx#live.com/onenote/sections/SECTION_ID",
"createdDateTime": "2014-05-29T08:56:57.223Z",
"displayName": "Adresses",
"lastModifiedDateTime": "2014-06-10T12:55:22.41Z",
"isDefault": false,
"pagesUrl": "https://graph.microsoft.com/v1.0/users/xxx#live.com/onenote/sections/SECTION_ID/pages",
"createdBy": {
"user": {
"id": "USER_ID",
"displayName": "xxxx"
}
},
"lastModifiedBy": {
"user": {
"id": "USER_ID",
"displayName": "xxxx"
}
},
I wonder if I need to upgrade to Microsoft Graph API or if it safe to remain with the Onenote API.
I don't find any documentation about the migration. All the links pointing to the old url are now pointing to the new url...
We encourage you to move to Microsoft Graph API because it has a single auth token for multiple services like OneNote, OneDrive, SharePoint, etc. But you could stay on the OneNote API and we still fully support it

Spring profiles not ordering correctly when obtaining config from Spring Cloud Config Server

I have a Spring Boot application obtaining configuration from Spring Cloud config server (native mode). The base application.yml file in the config location loaded by the config server contains the following:
eureka:
client:
service-url:
defaultZone: ${BOOT_EUREKA_LOCATIONS:http://instance1.localhost:7761/eureka,http://instance2.localhost:7762/eureka,http://instance3.localhost:7763/eureka}
register-with-eureka: true
---
spring:
profiles: test
eureka:
client:
register-with-eureka: false #no registration on Eureka when testing
service-url:
defaultZone: ${BOOT_EUREKA_LOCATIONS:http://sparky:8761/eureka}
When hitting the endpoint for config server (http://mygateway/config-server/myapp/test), I get back the following for the "myapp" application running in profile "test":
{
"name": "myapp",
"profiles": [
"test"
],
"label": null,
"version": null,
"state": null,
"propertySources": [
{
"name": "file:////wherever/application.yml#test",
"source": {
"spring.profiles": "test",
"eureka.client.register-with-eureka": false,
"eureka.client.service-url.defaultZone": "${BOOT_EUREKA_LOCATIONS:http://sparky:8761/eureka}"
}
},
{
"name": "file:////whereever/application.yml",
"source": {
"eureka.client.service-url.defaultZone": "${BOOT_EUREKA_LOCATIONS:http://instance1.localhost:7761/eureka,http://instance2.localhost:7762/eureka,http://instance3.localhost:7763/eureka}"
When running myApp in the test profile, the value of eureka.client.service-url.defaultZone is http://instance1.localhost:7761/eureka,http://instance2.localhost:7762/eureka,http://instance3.localhost:7763/eureka, which is unexpected.
I would have expected the entry in the test profile to override it (as it does if you have the application.yml locally). Thoughts on why I wouldn't be getting the value from the "test" profile when using the value in myApp?
My intent would be to add the "default" values at the top, and have the "profile" override any non-standard defaults.
Update:
myApp/env does NOT show the "application.yml#test" loaded, however it shows the test profile, but only the default values returned back from the config server (not the #test ones):
{
"profiles": [
"test"
],
"server.ports": {
"local.server.port": 7761
},
"configService:file:////wherever/application.yml": {
"eureka.client.service-url.defaultZone": "http://instance1.localhost:7761/eureka,http://instance2.localhost:7762/eureka,http://instance3.localhost:7763/eureka"
It was a complete user error. I was setting the default "test" active profile in the application.yml instead of passing in as an environment variable or bootstrap.yml, therefore it wasn't loaded soon enough for the config server hit.

jHipster api with http session authentication not working for ionic app

Use Case
I am trying to connect jHipster generated application with ionic 2 app. I am using http session authentication
Overview of the issue
XMLHttpRequest cannot load http://192.168.0.14:8081//vconnect/api/countries. No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin 'http://192.168.0.4:8100' is therefore not allowed access. The response had HTTP status code 403.
JHipster configuration, a .yo-rc.json file generated in the root folder
{
"generator-jhipster": {
"jhipsterVersion": "3.0.0",
"baseName": "vconnect",
"packageName": "com.zenfact.vconnect",
"packageFolder": "com/zenfact/vconnect",
"serverPort": "8080",
"authenticationType": "session",
"hibernateCache": "ehcache",
"clusteredHttpSession": "no",
"websocket": "no",
"databaseType": "sql",
"devDatabaseType": "postgresql",
"prodDatabaseType": "postgresql",
"searchEngine": "elasticsearch",
"buildTool": "maven",
"enableSocialSignIn": false,
"rememberMeKey": "559bbe3167552d040ba24d16506d389a7ba851c3",
"useSass": false,
"applicationType": "monolith",
"testFrameworks": [
"gatling"
],
"enableTranslation": true,
"nativeLanguage": "en",
"languages": [
"en",
"zh-cn",
"fr",
"hi",
"ja"
]
}
}
From my research I found that mobile apps do not play well with HTTP session authentication.
So I have recreated jhipster project with Oauth2 authentication which seems to work fine with ionic app that I am developing.
and the No 'Access-Control-Allow-Origin' header issue is solved by un-commenting cors in application.yml.

How can I give sessions in a Selenium Grid an unlimited idle time, but clean up disconnected ones?

I have a selenium grid that uses the following config:
{
"port": 4444,
"newSessionWaitTimeout": 2000
}
and 2 nodes that use this config:
{
"capabilities": [{
"browserName": "chrome",
"platform": "LINUX",
"maxInstances": 8
}],
"configuration": {
"nodeTimeout": 120,
"port": 5555,
"hubPort": 4444,
"hubHost": "hubhost",
"nodePolling": 2000,
"registerCycle": 10000,
"register": true,
"cleanUpCycle": 2000,
"timeout": -1,
"browserTimeout": -1,
"maxSession": 8
}
}
I wrote a piece of Java-Code that opens a connection via the RemoteWebDriver-Class. The code does several calls on the driver and afterward suspends for unknown time (30s - 1h). I don't want to close the session, because on wake, the process needs to react really fast.
With the timeout set to -1 everything works. The process will stay connected to the session (and the browser) for unlimited time. Unfortunately, the process is killed at random, when an automatic service decides to.
The node recognizes that the client shuts down:
selenium deleted due to client timeout
But the sessions aren't cleaned up! The unlimited timeout keeps them alive and the grid won't free them for further use.
How can I solve this problem with the selenium config?
Building a process-shutdown-hook that calls "driver.quit()" to free the session, is not an option.
Thanks for any help!
Did you notice the "cleanUpCycle": 2000 setting in the config ?
It means that the Hub will cleanup itself in 2000 milliseconds !

Categories

Resources