Skip to content

Commit 46841d2

Browse files
authored
Merge pull request #470 from ForgeRock/develop
ForgeRock Android SDK 4.7.0 Release
2 parents 797e1bb + b867e0c commit 46841d2

File tree

434 files changed

+2907
-9026
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

434 files changed

+2907
-9026
lines changed

.github/workflows/bitbar-prepare-artifacts.yaml

+4-4
Original file line numberDiff line numberDiff line change
@@ -50,7 +50,7 @@ jobs:
5050
- name: Sign app-debug-androidTest.apk
5151
uses: r0adkll/sign-android-release@v1
5252
with:
53-
releaseDirectory: samples/app/build/outputs/apk/androidTest/debug
53+
releaseDirectory: e2e/app/build/outputs/apk/androidTest/debug
5454
signingKeyBase64: ${{ secrets.SIGNING_KEYSTORE }}
5555
alias: ${{ secrets.SIGNING_ALIAS }}
5656
keyStorePassword: ${{ secrets.SIGNING_KEYSTORE_PASSWORD }}
@@ -72,14 +72,14 @@ jobs:
7272

7373
# Publish the signed APKs as build artifacts
7474
- name: Publish app-debug-androidTest.apk
75-
uses: actions/upload-artifact@v3
75+
uses: actions/upload-artifact@v4
7676
if: success()
7777
with:
7878
name: app-debug-androidTest-signed.apk
79-
path: samples/app/build/outputs/apk/androidTest/debug/app-debug-androidTest-signed.apk
79+
path: e2e/app/build/outputs/apk/androidTest/debug/app-debug-androidTest-signed.apk
8080

8181
- name: Publish forgerock-integration-tests-debug-androidTest-signed.apk
82-
uses: actions/upload-artifact@v3
82+
uses: actions/upload-artifact@v4
8383
if: success()
8484
with:
8585
name: forgerock-integration-tests-debug-androidTest-signed.apk

.github/workflows/bitbar-run.yaml

+2-2
Original file line numberDiff line numberDiff line change
@@ -41,12 +41,12 @@ jobs:
4141
steps:
4242
# Get the test artifacts prepared in previous step
4343
- name: Get the app-debug-androidTest.apk BitBar artifact
44-
uses: actions/download-artifact@v3
44+
uses: actions/download-artifact@v4
4545
with:
4646
name: app-debug-androidTest-signed.apk
4747

4848
- name: Get the forgerock-integration-tests-debug-androidTest.apk BitBar artifact
49-
uses: actions/download-artifact@v3
49+
uses: actions/download-artifact@v4
5050
with:
5151
name: forgerock-integration-tests-debug-androidTest-signed.apk
5252

.github/workflows/run-live-tests.yaml

+1-1
Original file line numberDiff line numberDiff line change
@@ -85,7 +85,7 @@ jobs:
8585

8686
# Save the logcat logs as run artifact
8787
- name: Upload logcat logs
88-
uses: actions/upload-artifact@v3
88+
uses: actions/upload-artifact@v4
8989
with:
9090
name: Logcat-logs
9191
path: forgerock-auth/build/outputs/androidTest-results/connected/**/logcat-org*.txt

.lift.toml

-2
This file was deleted.

CHANGELOG.md

+11-1
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,13 @@
1+
## [4.7.0]
2+
#### Added
3+
- A fallback mechanism that uses an asymmetric key if symmetric key generation in the Android Keystore fails [SDKS-3467]
4+
- Support for Self-Service [SDKS-3408]
5+
- Support for Sign-out with ID Token in the PingOne Platform [SDKS-3423]
6+
7+
#### Fixed
8+
- Prevent duplicate PUSH notifications in the Authenticator module [SDKS-3533]
9+
- Fixed an issue where, in some cases, a user's session was not invalidated upon re-authentication [SDKS-3772]
10+
111
## [4.6.0]
212
#### Added
313
- Allow developers to customize SDK storage [SDKS-3378]
@@ -188,7 +198,7 @@
188198
#### Added
189199
- `Set Persistent Cookie Node` is now supported to persist and manage Cookie [SDKS-182]
190200
- `Device Profile Collector Node` is now supported [SDKS-293]
191-
- `MetadataCallback` is now supported. For AM 6.5.2, when `MetadataCallback` is returned with stage value, SDK automatically parses `MetadataCallback` into Node's stage property. Please refer [this blog post](https://forum.forgerock.com/2020/02/using-an-authentication-tree-stage-to-build-a-custom-ui-with-the-forgerock-javascript-sdk/) for more details. [SDKS-305]
201+
- `MetadataCallback` is now supported. For AM 6.5.2, when `MetadataCallback` is returned with stage value, SDK automatically parses `MetadataCallback` into Node's stage property. [SDKS-305]
192202
- Allow server url paths to be configurable, Custom URL paths can be configured through `String.xml` or `ServerConfig` [SDKS-307]
193203
- Support `Authentication by Server` and `Transaction Authenticate to Tree` in Policy Environment. [SDKS-88]
194204
- Interface alignment with other platforms and introduce FRSession to authenticate against Authentication Tree in AM, persist and manage Session Token [SDKS-177]

README.md

+18-25
Original file line numberDiff line numberDiff line change
@@ -4,9 +4,9 @@
44

55
<p align="center">
66
<a href="https://github.com/ForgeRock">
7-
<img src="https://www.forgerock.com/themes/custom/forgerock/images/fr-logo-horz-color.svg" alt="Logo">
7+
<img src="https://cdn-docs.pingidentity.com/navbar/ping-logo-horizontal.svg" alt="Logo">
88
</a>
9-
<h2 align="center">ForgeRock SDK for Android</h2>
9+
<h2 align="center">Ping SDK for Android</h2>
1010
<p align="center">
1111
<a href="CHANGELOG.md">Change Log</a>
1212
·
@@ -17,17 +17,18 @@
1717
<hr/>
1818
</p>
1919

20-
The ForgeRock Android SDK enables you to quickly integrate the [ForgeRock Identity Platform](https://www.forgerock.com/digital-identity-and-access-management-platform) into your Android apps.
20+
The Ping SDK for Android enables you to quickly integrate Ping products into your Android apps.
2121

22-
Use the SDKs to leverage _[Intelligent Authentication](https://www.forgerock.com/platform/access-management/intelligent-authentication)_ in [ForgeRock's Access Management (AM)](https://www.forgerock.com/platform/access-management) product, to easily step through each stage of an authentication tree by using callbacks.
22+
Use the SDKs to leverage _[Intelligent Access](https://www.pingidentity.com/en/platform/capabilities/intelligent-access.html)_ to easily step through each stage of an authentication tree by using callbacks.
2323

2424
<!------------------------------------------------------------------------------------------------------------------------------------>
2525
<!-- REQUIREMENTS - Supported AM versions, API versions, any other requirements. -->
2626

2727
## Requirements
2828

2929
* ForgeRock Identity Platform
30-
* Access Management (AM) 6.5.2+
30+
* Ping Advanced Identity Cloud
31+
* PingAM 6.5.2+
3132

3233
* Android API level 23+
3334
* Android 6.0 (Marshmallow), 7.0 (Nougat), 8.0 (Oreo), 9.0 (Pie), 10.0, 11.0, 12.0, 13.0, 14.0, 15.0
@@ -50,22 +51,22 @@ dependencies {
5051

5152
To try out the ForgeRock Android SDK sample, perform these steps:
5253

53-
1. Setup an Access Management (AM) instance, as described in the **[Documentation](https://sdks.forgerock.com/android/01_prepare-am/)**.
54+
1. Setup an Advanced Identity Cloud tenant or PingAM instance, as described in the **[Documentation](https://docs.pingidentity.com/sdks/latest/sdks/tutorials/android/00_before-you-begin.html#server_configuration)**.
5455
2. Clone this repo:
5556

5657
```
5758
git clone https://github.com/ForgeRock/forgerock-android-sdk.git
5859
```
5960
3. Open the Android SDK project in [Android Studio](https://developer.android.com/studio).
60-
4. Open `/app/src/main/res/values/strings.xml` and edit the values to match your AM instance.
61+
4. Open `/app/src/main/res/values/strings.xml` and edit the values to match your server.
6162
5. On the **Run** menu, click **Run 'app'**.
6263
6364
<!------------------------------------------------------------------------------------------------------------------------------------>
6465
<!-- DOCS - Link off to the AM-centric documentation at sdks.forgerock.com. -->
6566
6667
## Documentation
6768
68-
Documentation for the SDKs is provided at **<https://sdks.forgerock.com>**, and includes topics such as:
69+
Documentation for the SDKs is provided at **<https://docs.pingidentity.com/sdks>**, and includes topics such as:
6970
7071
* Introducing the SDK Features
7172
* Preparing AM for use with the SDKS
@@ -91,16 +92,16 @@ JavaDoc
9192
9293
## Support
9394
94-
If you encounter any issues, be sure to check our **[Troubleshooting](https://backstage.forgerock.com/knowledge/kb/article/a68547609)** pages.
95+
If you encounter any issues, be sure to check our **[Troubleshooting](https://support.pingidentity.com/s/article/How-do-I-troubleshoot-the-ForgeRock-SDK-for-Android)** pages.
9596
9697
Support tickets can be raised whenever you need our assistance; here are some examples of when it is appropriate to open a ticket (but not limited to):
9798
9899
* Suspected bugs or problems with ForgeRock software.
99-
* Requests for assistance - please look at the **[Documentation](https://sdks.forgerock.com)** and **[Knowledge Base](https://backstage.forgerock.com/knowledge/kb/home/g32324668)** first.
100+
* Requests for assistance - please look at the **[Documentation](https://docs.pingidentity.com/sdks)** and **[Knowledge Base](https://support.pingidentity.com/s/knowledge-base)** first.
100101
101-
You can raise a ticket using **[BackStage](https://backstage.forgerock.com/support/tickets)**, our customer support portal that provides one stop access to ForgeRock services.
102+
You can raise a ticket using the **[Ping Identity Support Portal](https://support.pingidentity.com/s/)** that provides one stop access to support services.
102103
103-
BackStage shows all currently open support tickets and allows you to raise a new one by clicking **New Ticket**.
104+
The support portal shows all currently open support tickets and allows you to raise a new one by clicking **New Ticket**.
104105
105106
<!------------------------------------------------------------------------------------------------------------------------------------>
106107
<!-- COLLABORATION -->
@@ -109,22 +110,15 @@ BackStage shows all currently open support tickets and allows you to raise a new
109110
110111
If you would like to contribute to this project you can fork the repository, clone it to your machine and get started.
111112
112-
<!-- Note: Found elsewhere, but is Java-only //-->
113-
Be sure to check out our [Coding Style and Guidelines](https://wikis.forgerock.org/confluence/display/devcom/Coding+Style+and+Guidelines) page.
114-
115113
<!------------------------------------------------------------------------------------------------------------------------------------>
116114
<!-- LEGAL -->
117115
118116
## Disclaimer
119117
120-
> **This code is provided by ForgeRock on an “as is” basis, without warranty of any kind, to the fullest extent permitted by law.
121-
>ForgeRock does not represent or warrant or make any guarantee regarding the use of this code or the accuracy,
122-
>timeliness or completeness of any data or information relating to this code, and ForgeRock hereby disclaims all warranties whether express,
123-
>or implied or statutory, including without limitation the implied warranties of merchantability, fitness for a particular purpose,
124-
>and any warranty of non-infringement. ForgeRock shall not have any liability arising out of or related to any use,
125-
>implementation or configuration of this code, including but not limited to use for any commercial purpose.
126-
>Any action or suit relating to the use of the code may be brought only in the courts of a jurisdiction wherein
127-
>ForgeRock resides or in which ForgeRock conducts its primary business, and under the laws of that jurisdiction excluding its conflict-of-law provisions.**
118+
> **This code is provided by Ping Identity Corporation ("Ping") on an "as is" basis, without warranty of any kind, to the fullest extent permitted by law.
119+
> Ping Identity Corporation does not represent or warrant or make any guarantee regarding the use of this code or the accuracy, timeliness or completeness of any data or information relating to this code, and Ping Identity Corporation hereby disclaims all warranties whether express, or implied or statutory, including without limitation the implied warranties of merchantability, fitness for a particular purpose, and any warranty of non-infringement.
120+
> Ping Identity Corporation shall not have any liability arising out of or related to any use, implementation or configuration of this code, including but not limited to use for any commercial purpose.
121+
> Any action or suit relating to the use of the code may be brought only in the courts of a jurisdiction wherein Ping Identity Corporation resides or in which Ping Identity Corporation conducts its primary business, and under the laws of that jurisdiction excluding its conflict-of-law provisions.**
128122
129123
<!------------------------------------------------------------------------------------------------------------------------------------>
130124
<!-- LICENSE - Links to the MIT LICENSE file in each repo. -->
@@ -135,6 +129,5 @@ This project is licensed under the MIT License - see the [LICENSE](LICENSE) file
135129
136130
---
137131
138-
&copy; Copyright 2020 ForgeRock AS. All Rights Reserved
132+
&copy; Copyright 2020-2025 Ping Identity. All Rights Reserved
139133
140-
[forgerock-logo]: https://www.forgerock.com/themes/custom/forgerock/images/fr-logo-horz-color.svg "ForgeRock Logo"

build.gradle.kts

+5-5
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@ val customTemplatesFolder = file("$projectDir/dokka/templates")
1717
buildscript {
1818

1919
dependencies {
20-
classpath("com.android.tools.build:gradle:8.6.0")
20+
classpath("com.android.tools.build:gradle:8.7.1")
2121
classpath("com.adarshr:gradle-test-logger-plugin:2.0.0")
2222
classpath("com.google.gms:google-services:4.3.15")
2323
}
@@ -26,7 +26,7 @@ buildscript {
2626
plugins {
2727
id("io.github.gradle-nexus.publish-plugin") version "1.1.0"
2828
id("org.sonatype.gradle.plugins.scan") version "2.4.0"
29-
id("org.jetbrains.dokka") version "1.9.10"
29+
id("org.jetbrains.dokka") version "2.0.0"
3030
id("com.android.application") version "8.6.0" apply false
3131
id("com.android.library") version "8.6.0" apply false
3232
id("org.jetbrains.kotlin.android") version "1.9.22" apply false
@@ -47,9 +47,9 @@ allprojects {
4747

4848
resolutionStrategy {
4949
// Due to vulnerability [CVE-2022-40152] from dokka project.
50-
force("com.fasterxml.jackson.module:jackson-module-kotlin:2.13.5")
51-
force("com.fasterxml.jackson.dataformat:jackson-dataformat-xml:2.13.5")
52-
force("com.fasterxml.jackson.core:jackson-databind:2.13.5")
50+
force("com.fasterxml.jackson.module:jackson-module-kotlin:2.15.0")
51+
force("com.fasterxml.jackson.dataformat:jackson-dataformat-xml:2.15.0")
52+
force("com.fasterxml.jackson.core:jackson-databind:2.15.0")
5353
// Junit test project
5454
force("junit:junit:4.13.2")
5555
//Due to Vulnerability [CVE-2022-2390]: CWE-471 The product does not properly

buildSrc/build.gradle.kts

+1-1
Original file line numberDiff line numberDiff line change
@@ -15,5 +15,5 @@ repositories {
1515
}
1616

1717
dependencies {
18-
implementation("com.android.tools.build:gradle-api:8.6.0")
18+
implementation("com.android.tools.build:gradle-api:8.7.1")
1919
}
File renamed without changes.

samples/app/build.gradle.kts e2e/app/build.gradle.kts

+8-9
Original file line numberDiff line numberDiff line change
@@ -102,20 +102,19 @@ dependencies {
102102

103103
// End of SDK
104104

105-
// Keep the sample application specific library out of the toml
106105
// Material Design 3
107-
implementation("com.google.android.material:material:1.11.0")
108-
implementation("androidx.compose.material3:material3")
109-
implementation("androidx.core:core-splashscreen:1.0.1")
106+
implementation(libs.material)
107+
implementation(libs.androidx.material3.android)
108+
implementation(libs.androidx.core.splashscreen)
110109

111110
// Android Studio Preview support
112-
implementation("androidx.compose.ui:ui-tooling-preview")
113-
debugImplementation("androidx.compose.ui:ui-tooling")
111+
implementation(libs.androidx.ui.tooling.preview)
112+
debugImplementation(libs.androidx.ui.tooling)
114113

115-
implementation("androidx.activity:activity-compose:1.8.2")
114+
implementation(libs.androidx.activity.compose)
116115

117-
implementation("androidx.navigation:navigation-compose:2.7.7")
118-
implementation("androidx.compose.material:material-icons-extended:1.6.2")
116+
implementation(libs.androidx.navigation.compose)
117+
implementation(libs.androidx.material.icons.extended)
119118

120119
implementation(libs.androidx.appcompat)
121120
testImplementation(libs.junit)
File renamed without changes.

samples/app/src/main/AndroidManifest.xml e2e/app/src/main/AndroidManifest.xml

+7-7
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
11
<?xml version="1.0" encoding="utf-8"?><!--
2-
~ Copyright (c) 2023 ForgeRock. All rights reserved.
2+
~ Copyright (c) 2023 - 2024 ForgeRock. All rights reserved.
33
~
4-
~ This software may be modified and distributed under the terms
5-
~ of the MIT license. See the LICENSE file for details.
4+
~ This software may be modified and distributed under the terms
5+
~ of the MIT license. See the LICENSE file for details.
66
-->
77

88
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
@@ -51,7 +51,6 @@
5151
</intent-filter>
5252
</activity>
5353

54-
<!-- Using Custom scheme
5554
<activity android:name="net.openid.appauth.RedirectUriReceiverActivity"
5655
android:exported="true"
5756
tools:node="replace">
@@ -63,9 +62,9 @@
6362
android:scheme="org.forgerock.demo" />
6463
</intent-filter>
6564
</activity>
66-
-->
6765

6866
<!-- Using https scheme -->
67+
<!--
6968
<activity
7069
android:name="net.openid.appauth.RedirectUriReceiverActivity"
7170
android:exported="true"
@@ -77,10 +76,11 @@
7776
<category android:name="android.intent.category.BROWSABLE" />
7877
7978
<data android:scheme="https" />
80-
<data android:host="example.com" />
81-
<data android:path="/oauth2redirect" />
79+
<data android:host="https://openam-sdks2.forgeblocks.com/" />
80+
<data android:path="/login" />
8281
</intent-filter>
8382
</activity>
83+
-->
8484

8585
</application>
8686

Original file line numberDiff line numberDiff line change
@@ -0,0 +1,81 @@
1+
/*
2+
* Copyright (c) 2023 - 2024 ForgeRock. All rights reserved.
3+
*
4+
* This software may be modified and distributed under the terms
5+
* of the MIT license. See the LICENSE file for details.
6+
*/
7+
8+
package com.example.app
9+
10+
import androidx.compose.material3.AlertDialog
11+
import androidx.compose.material3.Text
12+
import androidx.compose.material3.TextButton
13+
import androidx.compose.runtime.Composable
14+
import androidx.compose.runtime.getValue
15+
import androidx.compose.runtime.mutableStateOf
16+
import androidx.compose.runtime.remember
17+
import androidx.compose.runtime.setValue
18+
19+
@Composable
20+
fun Alert(throwable: Throwable) {
21+
22+
var showConfirmation by remember {
23+
mutableStateOf(true)
24+
}
25+
26+
if (showConfirmation) {
27+
AlertDialog(
28+
onDismissRequest = { showConfirmation = false },
29+
confirmButton = {},
30+
dismissButton = {
31+
TextButton(onClick = { showConfirmation = false })
32+
{ Text(text = "Ok") }
33+
},
34+
text = {
35+
Text(text = throwable.toString())
36+
}
37+
)
38+
}
39+
}
40+
41+
@Composable
42+
fun Alert(throwable: Throwable?, onDismiss: () -> Unit) {
43+
throwable?.let {
44+
AlertDialog(
45+
onDismissRequest = { onDismiss() },
46+
confirmButton = {},
47+
dismissButton = {
48+
TextButton(onClick = { onDismiss() })
49+
{ Text(text = "Ok") }
50+
},
51+
text = {
52+
Text(text = throwable.toString())
53+
}
54+
)
55+
}
56+
}
57+
58+
@Composable
59+
fun Alert(msg: String, onOK: () -> Unit) {
60+
61+
var showConfirmation by remember {
62+
mutableStateOf(true)
63+
}
64+
65+
if (showConfirmation) {
66+
AlertDialog(
67+
onDismissRequest = { showConfirmation = false },
68+
confirmButton = {},
69+
dismissButton = {
70+
TextButton(onClick = {
71+
showConfirmation = false
72+
onOK()
73+
})
74+
{ Text(text = "Ok") }
75+
},
76+
text = {
77+
Text(text = msg)
78+
}
79+
)
80+
}
81+
}

0 commit comments

Comments
 (0)