FIDO2(WebAuthn) server officially certified by FIDO Alliance and Relying Party examples.

Overview

Overview

FIDO (Fast IDentity Online) is an open standard for online authentication. It is designed to solve the password problems stemming from a lot of security problems as we are suffering today.

Rather than relying on symmetric credentials (like passwords or PINs, typically which is a knowledge-based factor), FIDO is based on a public-key cryptography algorithm that is based on asymmetric credentials.

Simply, the device generates the key pair and stores the private key within the secure area, and sends the corresponding public key (as the name implies it is okay to be public) to the server.

Then, if the authentication is needed, the server sends challenges to the device and the device generates the digital signature with the private key and sends it to the server.

Finally, the server can validate the signature with the registered public key.

What is FIDO2

FIDO2 is an improved standard for use on the web and other platforms as well as mobile. Various web browsers and OS platforms currently support the FIDO2 standard API.

Basically, FIDO2 has the following operations - Registration, Authentication.

Registration

  • The user is prompted to choose an available FIDO authenticator that matches the online service’s acceptance policy.
  • User unlocks the FIDO authenticator using a fingerprint reader, a button on a second–factor device, securely–entered PIN, or other methods.
  • The user’s device creates a new public/private key pair unique for the local device, online service, and user’s account.
  • The public key is sent to the online service and associated with the user’s account. The private key and any information about the local authentication method (such as biometric measurements or templates) never leave the local device.

Authentication

  • Online service challenges the user to log in with a previously registered device that matches the service’s acceptance policy.
  • User unlocks the FIDO authenticator using the same method as at Registration time.
  • The device uses the user’s account identifier provided by the service to select the correct key and sign the service’s challenge.
  • The client device sends the signed challenge back to the service, which verifies it with the stored public key and lets the user log in.

Screenshots

Chrome on Mac with TouchId

registration_flow

Chrome on Mac with Secret Key (2FA)

registration_flow

Chrome on Android with Fingerprint (Reg)

registration_flow

Chrome on Android with Fingerprint (Auth)

registration_flow

Modules

  • server: FIDO2 server
  • common: FIDO2 related common models
  • rp-server: a simple RP server implementation
  • spring-boot-stater: FIDO2 server wrapped in a spring boot starter

Features

  • Supported browsers (Supported authenticators and interfaces may be different depending on the current browsers implementations)
    • Chrome
    • Opera (inherited from Chrome)
    • Firefox
    • MS Edge (Windows 10 /w 2018 October Update)
    • MS Edge on Chromium
    • Safari
  • Supported authenticators (Platforms and externals)
    • Any FIDO2 authenticators and U2F authenticators with None attestation
  • Signature algorithms
    • RS1 (RSASSA-PKCS1-v1_5 w/ SHA-1)
    • RS256 (RSASSA-PKCS1-v1_5 w/ SHA-256)
    • RS384 (RSASSA-PKCS1-v1_5 w/ SHA-384)
    • RS512 (RSASSA-PKCS1-v1_5 w/ SHA-512)
    • PS256 (RSASSA-PSS w/ SHA-256)
    • PS384 (RSASSA-PSS w/ SHA-384)
    • PS512 (RSASSA-PSS w/ SHA-512)
    • EDDSA (EdDSA)
    • ES256 (ECDSA w/ SHA-256)
    • ES384 (ECDSA w/ SHA-384)
    • ES512 (ECDSA w/ SHA-512)
    • ES256K (ECDSA using P-256K and SHA-256)
  • Supported attestation types
    • Basic
    • Self
    • Attestation CA (a.k.a Privacy CA)
    • None
    • Anonymization CA
  • Supported attestation formats
    • Packed (FIDO2)
    • Tpm (Windows10 devices)
    • Android key attestation
    • Android SafetyNet (Any Android devices running 7+)
    • FIDO U2F (Legacy U2F authenticators)
    • Apple Anonymous
    • None
  • Metadata service integration
    • FIDO MDSv2
  • Supported extensions
    • credProps
    • credProtect

How to play with

You need to run the FIDO2 server and RP Server first.

If you want to integrate your own RP Server, please implement APIs by referring to the sample codes. Regarding client sides, you may implement the web app for communicating with the RP server.

Local DB

FIDO2 Server running on local environments uses h2 as an embedded DB. This needs to be replaced with commercial standalone DB for other environments such as staging, beta or real.

In the case of the local environment, you can use the h2 console. Add the following path /h2-console to the fido server URL to access the h2 web console.

e.g., http://localhost:8081/h2-console

Spring Boot Starter

We also provide our server in the form of a spring boot starter.

Check out the spring-boot-starter directory.

How to run

# Start RP Server
cd rpserver
./gradlew bootRun

# Start FIDO2 Server or Line-fido2-spring-boot Demo
cd server
./gradlew bootRun

cd spring-boot-starter/line-fido2-spring-boot-demo
./gradlew bootRun

Issues

  • If data.sql doesn't work well in an IntelliJ environment, try commenting on this part in build.gradle.
jar {
  processResources {
    exclude("**/*.sql")
  }
}

Lombok

This project utilizes Lombok to reduce implementing getter/setter/constructors. You need the Lombok plugin to build with IntelliJ and Eclipse. See the following web pages to get information.

https://projectlombok.org/

Comments
  • UserKeyServiceImpl convert function does not support EdDSA Algorithm

    UserKeyServiceImpl convert function does not support EdDSA Algorithm

    #What is this PR for? See Issue #4

    Overview or reasons

    Please see Issue #4

    Tasks

    • added a case for the EdDSA algorithm.

    Result

    • I have tested this with a custom authenticator (i.e. one that works on local servers / non https servers) forced to use EdDSA, and confirmed that it works for EdDSA keys.
    defect 
    opened by gmulhearn 5
  • MDS v3.0

    MDS v3.0

    Hi, I would like to know if there are any updates regarding the MDS implementation, will this repo comply to the latest MDS v3.0a any time soon?

    https://fidoalliance.org/metadata/

    enhancement 
    opened by alvinlee001 4
  • Update to support metadata service v3

    Update to support metadata service v3

    What is this PR for?

    Resolved https://github.com/line/line-fido2-server/issues/11

    Overview or reasons

    • Official termination of MDS v2 support (until October 2022)
    • https://fidoalliance.org/metadata/
    • https://fidoalliance.org/legacy-mds2-information
    • https://fidoalliance.org/specs/mds/fido-metadata-service-v3.0-ps-20210518.html#metadata-blob-payload-entry-dictionary

    Tasks

    • Modify MdsFetchTask to support v3.
    • Delete common class libraries for messages (common-1.3-SNAPSHOT.jar) and move associated classes.
    • Add a column to the METADATA table. (biometricStatusReports)
    • Refactor Mds-related code. (Added helper, util, exception handling classes)
    • Add test code.

    How to test

    • You can perform unit tests using the MdsV3MetadataHelperTest class.
    enhancement 
    opened by kj84park 3
  • Use debug level logging to avoid performance impact (#23)

    Use debug level logging to avoid performance impact (#23)

    What is this PR for?

    Resolves #23 by logging debug logs at an appropriate logging level to make server less busy for logging during high traffic rate.

    Overview or reasons

    It appears that current logs in the FIDO server are mainly for debugging purpose, but they are logged in info level.

    As a result, even if info level is configured in logback, they are always logged. When traffic rate is high, the server becomes busy for logging.

    On the other hand, some logs passes parameters with manual string construction instead of {} placeholder, so the impact is even larger. (See https://www.slf4j.org/faq.html#logging_performance for details)

    Tasks

    • Align all debugging logs to be debug level: log.info -> log.debug
    • Use {} placeholders in log message whenever possible
    • Pass objects directly as message parameters instead of manual string construction like toString or String.format. This can avoid redundant computation when the log is not required for the configured log level.
    • Prepare Base64url encoded strings for logging and share it in multiple debug logs to avoid redundant encoding.
      • Note that the encoding is still performed no matter what log level is. Since changing log level should have significant improvement, this PR keeps this change minimal.

    Result

    • The logs are only logged when logback is configured to debug level.
    opened by ericlai616 2
  • Improve message validation check

    Improve message validation check

    When a message is entered into the controller, The controller calls the following logic to verify the message.

    ReqMsgVerifier.validateRegOptionRequest(regOptionRequest);

    We expect this logic to be improved with Spring Boot Bean Validation.

    good first issue improvement 
    opened by kj84park 2
  • Add descriptions of parameters to documentation

    Add descriptions of parameters to documentation

    Hello, It's taken some time for me to find docs to parameters of request and responses to FIDO 2 server (such as "authenticatorAttachment"). I think a good idea is to add description from https://www.w3.org/TR/webauthn/ to swagger and REST docs

    opened by v-yatsevich 1
  • Add community documents

    Add community documents

    I created a basic contributing guide. But if you need to add more information, such as environment settings, or commit message rules, please feel free to add it. For example, https://armeria.dev/community/developer-guide

    documentation 
    opened by syleeeee 1
  • Bugs/fix tpm parser

    Bugs/fix tpm parser

    What is this PR for?

    Resolved https://github.com/line/line-fido2-server/issues/27

    Tasks

    • TPM Public area for ECC key algorithm parsing issue has been fixed, and related code has been refactored.

    References

    • https://w3c.github.io/webauthn/#sctn-tpm-attestation
    • https://www.trustedcomputinggroup.org/wp-content/uploads/TPM-Rev-2.0-Part-2-Structures-01.38.pdf - 12.2.5.1 , 12.2.5.2
    defect 
    opened by kj84park 0
  • Fix incorrect settings for h2 console

    Fix incorrect settings for h2 console

    What is this PR for?

    Resolved https://github.com/line/line-fido2-server/issues/26

    Overview or reasons

    • Modified wrong settings related to h2 console.
    configuration 
    opened by kj84park 0
  • Add Webauthn official link

    Add Webauthn official link

    What is this PR for?

    Resolved #28

    Overview or reasons

    • Added Webauthn official links to Swagger and Spring REST Docs to improve development convenience.
    documentation 
    opened by kj84park 0
  • TPM attestation parser does not correctly handle ECC keys in pubArea

    TPM attestation parser does not correctly handle ECC keys in pubArea

    When parsing the unique field from pubArea during an attestation verification, unique is a TPM2B_PUBLIC_KEY_RSA only if the TPMI_ALG_PUBLIC is TPM_ALG_RSA. If TPMI_ALG_PUBLIC is TPM_ALG_ECC, unique is a TPMS_ECC_POINT. See TPM Rev 2.0 part 2, structures, section 12.2.3.2.

    Relevant code is at https://github.com/line/line-fido2-server/blob/7ad6e867b3faaab133ef950c16da37cda8a9d9e9/server/src/main/java/com/linecorp/line/auth/fido/fido2/server/attestation/tpm/TpmParser.java#L152.

    opened by aseigler 0
  • "docker-compose up" broken?

    Hi there, I cloned your repo successfully and tried to run it using "docker-compose up", but I get the following error: "failed to solve: failed to load cache key: pull access denied, repository does not exist or may require authorization: server message: insufficient_scope: authorization failed". I am logged in hub.docker.com, but to no avail.

    Full error message:

    
    [+] Running 0/3
     ⠿ build Warning                                                                                                                                            2.2s
     ⠿ rp Warning                                                                                                                                               2.2s
     ⠿ fido2 Warning                                                                                                                                            2.2s
    [+] Building 5.8s (13/20)                                                                                                                                        
     => [rp:latest internal] load build definition from Dockerfile                                                                                              0.0s
     => => transferring dockerfile: 248B                                                                                                                        0.0s
     => [fido2:latest internal] load build definition from Dockerfile                                                                                           0.0s
     => => transferring dockerfile: 32B                                                                                                                         0.0s
     => [build-image:latest internal] load build definition from Dockerfile                                                                                     0.0s
     => => transferring dockerfile: 158B                                                                                                                        0.0s
     => [rp:latest internal] load .dockerignore                                                                                                                 0.0s
     => => transferring context: 2B                                                                                                                             0.0s
     => [fido2:latest internal] load .dockerignore                                                                                                              0.0s
     => => transferring context: 2B                                                                                                                             0.0s
     => [build-image:latest internal] load .dockerignore                                                                                                        0.0s
     => => transferring context: 2B                                                                                                                             0.0s
     => [rp:latest internal] load metadata for docker.io/library/openjdk:8-jdk-alpine                                                                           3.3s
     => [fido2:latest internal] load metadata for docker.io/library/openjdk:8-jdk-slim                                                                          3.1s
     => [auth] library/openjdk:pull token for registry-1.docker.io                                                                                              0.0s
     => ERROR [fido2:latest] FROM docker.io/library/build-image:latest                                                                                          2.3s
     => => resolve docker.io/library/build-image:latest                                                                                                         2.2s
     => CANCELED [fido2:latest stage-0 1/2] FROM docker.io/library/openjdk:8-jdk-slim@sha256:19578a1e13b7a1e4cab9b227fb7b5d80e14665cf4024c6407d72ba89842a97ed   2.2s
     => => resolve docker.io/library/openjdk:8-jdk-slim@sha256:19578a1e13b7a1e4cab9b227fb7b5d80e14665cf4024c6407d72ba89842a97ed                                 0.0s
     => => sha256:19578a1e13b7a1e4cab9b227fb7b5d80e14665cf4024c6407d72ba89842a97ed 549B / 549B                                                                  0.0s
     => => sha256:ecb89bb055c1ee4db9da38713b953f6daafefe575c77c6439eabbb85e3168402 1.16kB / 1.16kB                                                              0.0s
     => => sha256:80e75f92be33ca2bd4b933633dafc72aa82a34792f9b769063a474e97e163b8b 7.51kB / 7.51kB                                                              0.0s
     => => sha256:1efc276f4ff952c055dea726cfc96ec6a4fdb8b62d9eed816bd2b788f2860ad7 23.07MB / 31.37MB                                                            2.3s
     => => sha256:a2f2f93da48276873890ac821b3c991d53a7e864791aaf82c39b7863c908b93b 1.58MB / 1.58MB                                                              0.4s
     => => sha256:1a2de4cc94315f2ba5015e6781672aa8e0b1456a4d488694bb5f016d8f59fa70 210B / 210B                                                                  0.4s
     => => sha256:9013b84ebbe7aec8b587e257266770d2ac6ec3fce4c27415e74fbaf5928b4549 7.34MB / 106.19MB                                                            2.3s
     => CANCELED [build-image:latest stage-0 1/2] FROM docker.io/library/openjdk:8-jdk-alpine@sha256:94792824df2df33402f201713f932b58cb9de94a0cd524164a0f22833  2.4s
     => => resolve docker.io/library/openjdk:8-jdk-alpine@sha256:94792824df2df33402f201713f932b58cb9de94a0cd524164a0f2283343547b3                               0.0s
     => => sha256:a3562aa0b991a80cfe8172847c8be6dbf6e46340b759c2b782f8b8be45342717 3.40kB / 3.40kB                                                              0.0s
     => => sha256:94792824df2df33402f201713f932b58cb9de94a0cd524164a0f2283343547b3 1.64kB / 1.64kB                                                              0.0s
     => => sha256:44b3cea369c947527e266275cee85c71a81f20fc5076f6ebb5a13f19015dce71 947B / 947B                                                                  0.0s
     => => sha256:e7c96db7181be991f19a9fb6975cdbbd73c65f4a2681348e63a141a2192a5f10 2.76MB / 2.76MB                                                              1.0s
     => => extracting sha256:e7c96db7181be991f19a9fb6975cdbbd73c65f4a2681348e63a141a2192a5f10                                                                   0.9s
     => => sha256:f910a506b6cb1dbec766725d70356f695ae2bf2bea6224dbe8c7c6ad4f3664a2 238B / 238B                                                                  1.4s
     => => sha256:c2274a1a0e2786ee9101b08f76111f9ab8019e368dce1e325d3c284a0ca33397 3.42MB / 70.73MB                                                             2.4s
     => => extracting sha256:f910a506b6cb1dbec766725d70356f695ae2bf2bea6224dbe8c7c6ad4f3664a2                                                                   0.0s
     => [build-image:latest internal] load build context                                                                                                        2.1s
     => => transferring context: 31.77MB                                                                                                                        2.1s
     => [auth] library/build-image:pull token for registry-1.docker.io                                                                                          0.0s
    ------
     > [fido2:latest] FROM docker.io/library/build-image:latest:
    ------
    failed to solve: failed to load cache key: pull access denied, repository does not exist or may require authorization: server message: insufficient_scope: authorization failed```
    opened by maltewirz 3
  • AuthenticatorTransport option

    AuthenticatorTransport option "hybrid" is missing

    I tried to test it as below

    image

    I used my mobile device(Galaxy21) as a authenticator

    and I found out following error in rpserver log.

    Could not resolve parameter [1] in public com.linecorp.line.auth.fido.fido2.rpserver.model.transport.AdapterServerResponse com.linecorp.line.auth.fido.fido2.rpserver.controller.AdapterController.sendRegistrationResponse(java.lang.String,com.linecorp.line.auth.fido.fido2.rpserver.model.AdapterRegServerPublicKeyCredential,javax.servlet.http.HttpServletRequest): JSON parse error: Cannot construct instance of `com.linecorp.line.auth.fido.fido2.common.AuthenticatorTransport`, problem: No value present; nested exception is com.fasterxml.jackson.databind.exc.ValueInstantiationException: Cannot construct instance of `com.linecorp.line.auth.fido.fido2.common.AuthenticatorTransport`, problem: No value present
    

    the problem was the missing option "hybrid".

    after I added it, everything was fine.

    opened by wlsdn93 0
  • Aaguid obtained doesn't match with the Aaguid registered

    Aaguid obtained doesn't match with the Aaguid registered

    Some of the Aaguid doesn't come correctly. For eg: Mac Touch using Safari gives the Aaguid as "00000000-0000-0000-0000-000000000000" whereas with Chrome comes as "adce0002-35bc-c60a-648b-0b25f1f05503"

    Same issues with YubiKey

    opened by JyotirGodavarthi 0
  • Set User Handle to a salted hash or random

    Set User Handle to a salted hash or random

    The current User Handle (a.k.a user ID) is a hash of the user name. https://github.com/line/line-fido2-server/blob/22d5aa954efe4e1a383c9eea3b2dc109e700f973/rpserver/src/main/java/com/linecorp/line/auth/fido/fido2/rpserver/controller/CredentialController.java#L147

    The documentation appears to recommend it with salted hash or random, so should we change that?

    This includes hash values of personally identifying information, unless the hash function is salted with salt values private to the Relying Party, since hashing does not prevent probing for guessable input values. It is RECOMMENDED to let the user handle be 64 random bytes, and store this value in the user’s account.

    https://www.w3.org/TR/2021/REC-webauthn-2-20210408/#sctn-user-handle-privacy

    enhancement 
    opened by seachicken 2
  • Add API Guide and Tests made with Spring RestDocs for rp-server

    Add API Guide and Tests made with Spring RestDocs for rp-server

    opened by kj84park 2
Releases(v1.0.2)
  • v1.0.2(Dec 8, 2022)

    What's Changed

    • Update to support metadata service v3 by @kj84park in https://github.com/line/line-fido2-server/pull/33

    Full Changelog: https://github.com/line/line-fido2-server/compare/v1.0.1...v1.0.2

    Source code(tar.gz)
    Source code(zip)
  • v1.0.1(Dec 8, 2022)

    What's Changed

    • Add Webauthn official link by @kj84park in https://github.com/line/line-fido2-server/pull/29
    • Fix incorrect settings for h2 console by @kj84park in https://github.com/line/line-fido2-server/pull/30
    • Bugs/fix tpm parser by @kj84park in https://github.com/line/line-fido2-server/pull/31

    Full Changelog: https://github.com/line/line-fido2-server/compare/v1.0.0...v1.0.1

    Source code(tar.gz)
    Source code(zip)
  • v1.0.0(Dec 8, 2022)

    What's Changed

    • Add community documents by @syleeeee in https://github.com/line/line-fido2-server/pull/1
    • Modify settings by @kj84park in https://github.com/line/line-fido2-server/pull/2
    • UserKeyServiceImpl convert function does not support EdDSA Algorithm by @gmulhearn in https://github.com/line/line-fido2-server/pull/5
    • Update README.md by @kj84park in https://github.com/line/line-fido2-server/pull/7
    • Create codeql-analysis.yml by @kj84park in https://github.com/line/line-fido2-server/pull/8
    • Update README.md by @kj84park in https://github.com/line/line-fido2-server/pull/9
    • Add API documents and Tests made with Spring RestDocs by @kj84park in https://github.com/line/line-fido2-server/pull/10
    • Add aaguid as a member of Assertion response to distinguish authenticator by @kj84park in https://github.com/line/line-fido2-server/pull/15
    • Add Docker configuration files by @kj84park in https://github.com/line/line-fido2-server/pull/14
    • Improve message validation check by @seachicken in https://github.com/line/line-fido2-server/pull/20
    • Add unit tests for Bean validation by @kj84park in https://github.com/line/line-fido2-server/pull/22
    • Use debug level logging to avoid performance impact (#23) by @ericlai616 in https://github.com/line/line-fido2-server/pull/24

    New Contributors

    • @syleeeee made their first contribution in https://github.com/line/line-fido2-server/pull/1
    • @gmulhearn made their first contribution in https://github.com/line/line-fido2-server/pull/5
    • @seachicken made their first contribution in https://github.com/line/line-fido2-server/pull/20
    • @ericlai616 made their first contribution in https://github.com/line/line-fido2-server/pull/24

    Full Changelog: https://github.com/line/line-fido2-server/commits/v1.0.0

    Source code(tar.gz)
    Source code(zip)
Owner
LINE
LINE
A small mod to improve support for architectures and libraries officially unsupported by Minecraft. Mainly targeting Apple Macs using arm processors.

fabric-loom-native-support A small mod to improve support for architectures and libraries officially unsupported by Minecraft. Mainly targeting Apple

FabricMC 5 Oct 17, 2022
Short Java programs for practice (OCP) Oracle Certified Professional Java SE 11

OCP-study Short Java programs to practice for (OCP) Oracle Certified Professional Java SE 11 Exam Google document with notes: https://docs.google.com/

Sabina Matjašič 1 May 24, 2022
Android Auto Apps Downloader (AAAD) is an app for Android Phones that downloads popular Android Auto 3rd party apps and installs them in the correct way to have them in Android Auto.

Android Auto Apps Downloader (AAAD) is an app for Android Phones that downloads popular Android Auto 3rd party apps and installs them in the correct way to have them in Android Auto.

Gabriele Rizzo 865 Jan 2, 2023
Nagram is a third-party Telegram client based on Nekogram with not many but useful modifications

?? Nagram is a third-party Telegram client based on Nekogram with not many but useful modifications. Official site: https://nextalone.xyz Teleg

NextAlone 189 Dec 29, 2022
The ByteSkript development kit, including resources for third-party libraries that are not contained within the standard runtime.

ByteSkript Development Kit Todo. The development kit is a set of advanced resources available for library creators. These are not available within the

null 1 Jan 8, 2022
Nekogram is a third-party Telegram client with not many but useful modifications

Nekogram is a third-party Telegram client with not many but useful modifications

Ketal 8 Nov 13, 2022
A plugin that open the GC command execution interface for third-party clients

gc-opencommand-plugin 中文 | English 一个为第三方客户端开放GC命令执行接口的插件 服务端安装 在 Release 下载 jar 放入 plugins 文件夹即可 控制台连接 首次启动时,会在 plugins 目录下生成一个 opencommand-plugin 目录

筱傑 222 Jan 1, 2023
UniFi Proxy makes it possible to integrate third-party hardware into UniFi Protect

UniFi Proxy UniFi Proxy makes it possible to integrate third-party hardware into UniFi Protect. For testing purposes only, it is recommended to purcha

Jan Heil 8 Dec 27, 2022
💡极致性能的企业级Java服务器框架,RPC,游戏服务器框架,web应用服务器框架。(Extreme fast enterprise Java server framework, can be RPC, game server framework, web server framework.)

?? 为性能而生的万能服务器框架 ?? Ⅰ. zfoo简介 ?? 性能炸裂,天生异步,Actor设计思想,无锁化设计,基于Spring的MVC式用法的万能RPC框架 极致序列化,原生集成的目前二进制序列化和反序列化速度最快的 zfoo protocol 作为网络通讯协议 高可拓展性,单台服务器部署,

null 1k Jan 1, 2023
Spring GraphQL examples using Netflix DGS, GraphQL Java and Spring GraphQL

spring-graphql-sample Spring GraphQL examples using the following frameworks and libraries: Netflix DGS(Domain Graph Service) framework Spring GraphQL

Hantsy Bai 56 Dec 20, 2022
This repository contains source code examples to support my course Spring Data JPA and Hibernate Beginner to Guru

Spring Data JPA - Spring Data JPA This repository contains source code examples to support my course Spring Data JPA and Hibernate Beginner to Guru Co

John Thompson 8 Aug 24, 2022
Parallel programming quick sort and parallel sum examples with Fork-join, RecursiveTask, RecursiveAction

QuickSortMultiThreading Parallel programming quick sort and parallel sum examples with Fork-join, RecursiveTask<T>, RecursiveAction Fork-Join Fork-Joi

Güven TUNCAY 4 Jun 12, 2022
The High-Performance Java Persistence book and video course code examples

High-Performance Java Persistence The High-Performance Java Persistence book and video course code examples. I wrote this article about this repositor

Vlad Mihalcea 1.1k Jan 9, 2023
about learning Spring Boot via examples. Spring Boot 教程、技术栈示例代码,快速简单上手教程。

Spring Boot 学习示例 Spring Boot 使用的各种示例,以最简单、最实用为标准,此开源项目中的每个示例都以最小依赖,最简单为标准,帮助初学者快速掌握 Spring Boot 各组件的使用。 Spring Boot 中文索引 | Spring Cloud学习示例代码 | Spring

纯洁的微笑 28.3k Jan 1, 2023
This repo for kodlama.io java camp examples

JavaCampExamples This repo for kodlama.io java camp examples Bu repository'de İsteyen herkesin faydalanabilmesi ve örnek alması için Java Kapında yapı

Salih Değirmenci 18 Mar 2, 2022
Java Design Patterns code examples

Java Design Patterns code examples Behavioral In software engineering, behavioral design patterns are design patterns that identify common communicati

Gaboso™ 3 Jun 29, 2022
An examples of creating test records in the database with Spring Boot + Spring Data + JPA usage.

Spring Boot + JPA — Clear Tests An examples of creating test records in the database with Spring Boot + Spring Data + JPA usage. Check out the article

Semyon Kirekov 8 Nov 24, 2022
Log4j CVE-2021-44228 examples: Remote Code Execution (through LDAP, RMI, ...), Forced DNS queries, ...

Log4j CVE-2021-44228 and CVE-2021-45046 Requisites Use a vulnerable JDK, for instance JDK 1.8.0_181 Usage Malicious server The malicious server deploy

Manuel Álvarez Álvarez 5 Feb 7, 2022
Simple examples for various Design patterns

About Simple examples for various Design patterns. Design patterns represent the best practices used by experienced object-oriented software developer

Mohsen Teymouri 1 Jan 26, 2022