Welcome Serena Central users! CLICK HERE
The migration of the Serena Central community is currently underway. Be sure to read THIS MESSAGE to get your new login set up to access your account.
lelle1 Absent Member.
Absent Member.
1865 views

test Oauth with curl


Hi all,

My Oauth knowledge is limited so bare with me.
One of my customers are building a mobile app and wants to use
Oauth/openid for authentication, my experiences with Oauth is limited
but as far as i understand it's supported in AM IDP from 4.1. I have
configured Oauth using the limited documentation and now I want to test
it with curl but cant really figure out how to do that, does anybody
have experience doing that and wants to share?
What I want to accomplish, I want to send a Oauth authentication request
using user name/password from a user in the local directory. I guess
that I want a access token back.

/Lennart


--
lelle
------------------------------------------------------------------------
lelle's Profile: https://forums.netiq.com/member.php?userid=410
View this thread: https://forums.netiq.com/showthread.php?t=54418

0 Likes
18 Replies
Anonymous_User Absent Member.
Absent Member.

Re: test Oauth with curl

lelle wrote:

>
> Hi all,
>
> My Oauth knowledge is limited so bare with me.
> One of my customers are building a mobile app and wants to use
> Oauth/openid for authentication, my experiences with Oauth is limited
> but as far as i understand it's supported in AM IDP from 4.1. I have
> configured Oauth using the limited documentation and now I want to
> test it with curl but cant really figure out how to do that, does
> anybody have experience doing that and wants to share?
> What I want to accomplish, I want to send a Oauth authentication
> request using user name/password from a user in the local directory.
> I guess that I want a access token back.
>
> /Lennart


Not sure if this is valid but do you still need this?

--
Cheers,
Edward
0 Likes
lelle1 Absent Member.
Absent Member.

Re: test Oauth with curl


Edward, sure if possible

/Lennart


--
lelle
------------------------------------------------------------------------
lelle's Profile: https://forums.netiq.com/member.php?userid=410
View this thread: https://forums.netiq.com/showthread.php?t=54418

0 Likes
Anonymous_User Absent Member.
Absent Member.

Re: test Oauth with curl

lelle wrote:

>
> Edward, sure if possible


A colleague helped me out with this. Hopefully it helps. In order to
obtain an access token from the IDP you can use:

curl -kvv -X POST -d
"grant_type=password&username=user&password=badpassword&scope=myScope"
"https://idp.site.com/nidp/oauth/nam/token?client_id=b547049b-4b9f-42f6-
99aa-de58f7947c2e&client_secret=zIWrNLtFq1yw7b5J59hOjYbdLzGyS6ZozK2blUdp
qQ_VIcT-pZ44PJVauKZ4_UbLPzGLf7JRGLGI2LmdFPJniA"

The client_id and client_secret can be found on the client config page.
The Scope allows you to use authz rules on the proxy that uses OAuth.

It'll respond with something like:

{

"access_token":
"/wEBAAQEACB0V8b6plNjJR/oCSA2O1ezB9aXAA55aWf4g0RrB1Y8JYCbFiuddFyQ@P4nMhb
@WBmdaixQc3cKL2p92QiI0054reAYh/ZusfIP5cjILjHA5a1cn8fDIFc9F16tdO/5FNnRD/v
eabrwcKDa4UF1HBR8wm@4ujLJ64G5qXe7wrf5cdRSZwPcJhO@0@OSLZCQyjczV8KUPTjwkVI
ZICc31sKCQaGyOCL4iemiGNawx3JvQJKd2OeRzznWuXZuBVO3AliKMTMF9/KvkF/AGs7i9Hw
K2ys1KaZ6LYeaRBnlwM9xHTukV1qAqem9z1crGK4wGNdiL8OqGHfNPNVLuLA1MlBQE4v1a4P
1bk4IVEa1ioGHSMdVFgMuiLNVP739qbHXodjv4gDe15589WS294oGvm6e",

"expires_in": 35999,

"refresh_token":
"/wEBAAYGACAvJsk4AFU1H5qNcwc9G43Ax1LJbvyBo9XumLiNblEFYHog3z1YierJZcHlwRp
iIbz011elOSvsJHYnCi7N7Q@X2e7mzz8U7FaiDskduCC6mrx0O8NfdTCLxDuquNwuHO2j6uH
L8S2CDJo3D0wzNv/OueJexHjS7su0LcVrxvS6STwX3sJI@VeOPo9buqg@qHndv5/0fWv0ocT
8Wxh4dD4PgXcndRkzziUQ5FWegUB2cDexylD5X0y1X7A1yNBZSqNX2AOSyx8GekVnfZ321a2
eOAGn89EEbLOdHEAw3LifqT0Z35j5qdKjmIbmzhKkZvRdu7Y8xIM9qBkVLTdIKL5YAGdjg2P
0DwX49bjZ6WL1aqXrqDdmu8ugiaWZYk89nsBo1SGoXMoa65/2YYtHy8fcHADga1gUfH3k/Oo
7DyXE9@EdIJzv4/x6LwgmuKU77lU~",

"scope": "myScope",

"token_type": "bearer"

}


To view the scope for the access token you can use:

curl -kvv -H "Authorization: Bearer
/wEBAAUFACBFzw1ZRCTTO@LJWm4QqP0sKQ1UCJSgk38xt4paez9DU0AaZTa0/REruyvfuazo
gFW/DU/nTFw5SCpFxluBQ/@LPIwC8wZqDy8AlyBRPCm98kiGNoafrUgLKWGitJI/6KGXeCAo
Iu8pspwP4jYMT25Vp37wGlLnXZ/Em/WDH1nEyeJNDt3hzNPZGDC0dm5VHoRqa3HyMVwWNHEI
6bVhiHpRgaV3poGQjV5sDrFJRzUls9@IezBbAfJG4cpdZn50D2Md@sMZUCUGIj9JFe0n0VJV
JDAz8Omoq6201ix/94raYt2WdlQuTIvcdp@omj9p3G2peJm1rC9FeYlh5@4H1ofJPhOXGz2W
Iu8BIaQUE79Is8dQ66JGqPstZQcbDP0ke6w~"
https://idp.site.com/nidp/oauth/nam/userinfo

This will respond with:

{

"myAttribute": "someValue",

"sub": "9c6bb7a6cb118d489bbc9c6bb7a6cb11"

}

To access the app:

curl -k -s -H "Authorization: Bearer
/wEBAAQEACB0V8b6plNjJR/oCSA2O1ezB9aXAA55aWf4g0RrB1Y8JYCbFiuddFyQ@P4nMhb@
WBmdaixQc3cKL2p92QiI0054reAYh/ZusfIP5cjILjHA5a1cn8fDIFc9F16tdO/5FNnRD/ve
abrwcKDa4UF1HBR8wm@4ujLJ64G5qXe7wrf5cdRSZwPcJhO@0@OSLZCQyjczV8KUPTjwkVIZ
ICc31sKCQaGyOCL4iemiGNawx3JvQJKd2OeRzznWuXZuBVO3AliKMTMF9/KvkF/AGs7i9HwK
2ys1KaZ6LYeaRBnlwM9xHTukV1qAqem9z1crGK4wGNdiL8OqGHfNPNVLuLA1MlBQE4v1a4P1
bk4IVEa1ioGHSMdVFgMuiLNVP739qbHXodjv4gDe15589WS294oGvm6e" -H "Host:
protectedapp.site.com" https://10.200.200.40/app/ |python -mjson.tool

To refresh an access token:

curl -kvv -X POST -d
"grant_type=refresh_token&refresh_token=/wEBAAYGACBOkR43BsX5JySkIBSBW6bM
QIDa1XV2zBeporKdWDkscnFxG7I2HALLEuRw@Ir0CDnB2fubSC8HhNIn19BEEuDOW@IAw4pm
15CE37DBEIOnsvgdvxvMeyJHGGU1QWhLI4FTumJQg1/cwYpNxGVC55uzILfX2LdAzz/SSvBi
86325Z5LEypQEz0bq91gsnzUmsJtYlbg/kY@S2BY3qLZwMN2D0L1ixk3Nc9jCXPWxExCktTg
UeL6WwcZ1Dl5a9pM9FmIyDeh4tINvH/0m53Aahf8ojcDhiotSWhP2Hl0tAU/SA6yPFy6HCiJ
OSlGPgVZjn22g0UqwJXm@akwtVcLb020@6kOmyFVjWf7FS1pp5T1F9VJDfVzstfXv9yfq34@
9h5oqogQHZto5t2POOdSEjh2"
"https://idp.site.com/nidp/oauth/nam/token?client_id=b547049b-4b9f-42f6-
99aa-de58f7947c2e&client_secret=zIWrNLtFq1yw7b5J59hOjYbdLzGyS6ZozK2blUdp
qQ_VIcT-pZ44PJVauKZ4_UbLPzGLf7JRGLGI2LmdFPJniA"


--
Cheers,
Edward
0 Likes
Highlighted
lelle1 Absent Member.
Absent Member.

Re: test Oauth with curl


Edward,
Thanks for your help, a lot of work, Christmas and new year came in
between. Will report back when I got the time to test.

/Lennart


--
lelle
------------------------------------------------------------------------
lelle's Profile: https://forums.netiq.com/member.php?userid=410
View this thread: https://forums.netiq.com/showthread.php?t=54418

0 Likes
lelle1 Absent Member.
Absent Member.

Re: test Oauth with curl


Edward,
Thanks for your help, a lot of work, Christmas and new year came in
between. Will report back when I got the time to test.

/Lennart


--
lelle
------------------------------------------------------------------------
lelle's Profile: https://forums.netiq.com/member.php?userid=410
View this thread: https://forums.netiq.com/showthread.php?t=54418

0 Likes
lelle1 Absent Member.
Absent Member.

Re: test Oauth with curl


Hi Edward,

Now I have done some tests, works fine. Thanks a lot

/Lelle


--
lelle
------------------------------------------------------------------------
lelle's Profile: https://forums.netiq.com/member.php?userid=410
View this thread: https://forums.netiq.com/showthread.php?t=54418

0 Likes
Anonymous_User Absent Member.
Absent Member.

Re: test Oauth with curl

lelle wrote:

>
> Hi Edward,
>
> Now I have done some tests, works fine. Thanks a lot
>
> /Lelle


No problem. Keep in mind that OAuth is not a authentication mechanism.
The resource owner (the user) is merely given the Access Gateway an
access token to access some information (Scope) about him or her.

If you are looking to protect a mobile app or something you are better
off using openId-Connect which is a proper authentication/federation
protocol. OAuth is not.

--
Cheers,
Edward
0 Likes
ratclma Absent Member.
Absent Member.

Re: test Oauth with curl


Edward van der Maas;262842 Wrote:
> lelle wrote:
>
> >
> > Edward, sure if possible

>
> A colleague helped me out with this. Hopefully it helps. In order to
> obtain an access token from the IDP you can use:
>
> curl -kvv -X POST -d
> "grant_type=password&username=user&password=badpassword&scope=myScope"
> "https://idp.site.com/nidp/oauth/nam/token?client_id=b547049b-4b9f-42f6-
> 99aa-de58f7947c2e&client_secret=zIWrNLtFq1yw7b5J59hOjYbdLzGyS6ZozK2blUdp
> qQ_VIcT-pZ44PJVauKZ4_UbLPzGLf7JRGLGI2LmdFPJniA"
>
> The client_id and client_secret can be found on the client config page.
> The Scope allows you to use authz rules on the proxy that uses OAuth.
>
> It'll respond with something like:
>
> {
>
> "access_token":
> "/wEBAAQEACB0V8b6plNjJR/oCSA2O1ezB9aXAA55aWf4g0RrB1Y8JYCbFiuddFyQ@P4nMhb
> @WBmdaixQc3cKL2p92QiI0054reAYh/ZusfIP5cjILjHA5a1cn8fDIFc9F16tdO/5FNnRD/v
> eabrwcKDa4UF1HBR8wm@4ujLJ64G5qXe7wrf5cdRSZwPcJhO@0@OSLZCQyjczV8KUPTjwkVI
> ZICc31sKCQaGyOCL4iemiGNawx3JvQJKd2OeRzznWuXZuBVO3AliKMTMF9/KvkF/AGs7i9Hw
> K2ys1KaZ6LYeaRBnlwM9xHTukV1qAqem9z1crGK4wGNdiL8OqGHfNPNVLuLA1MlBQE4v1a4P
> 1bk4IVEa1ioGHSMdVFgMuiLNVP739qbHXodjv4gDe15589WS294oGvm6e",
>
> "expires_in": 35999,
>
> "refresh_token":
> "/wEBAAYGACAvJsk4AFU1H5qNcwc9G43Ax1LJbvyBo9XumLiNblEFYHog3z1YierJZcHlwRp
> iIbz011elOSvsJHYnCi7N7Q@X2e7mzz8U7FaiDskduCC6mrx0O8NfdTCLxDuquNwuHO2j6uH
> L8S2CDJo3D0wzNv/OueJexHjS7su0LcVrxvS6STwX3sJI@VeOPo9buqg@qHndv5/0fWv0ocT
> 8Wxh4dD4PgXcndRkzziUQ5FWegUB2cDexylD5X0y1X7A1yNBZSqNX2AOSyx8GekVnfZ321a2
> eOAGn89EEbLOdHEAw3LifqT0Z35j5qdKjmIbmzhKkZvRdu7Y8xIM9qBkVLTdIKL5YAGdjg2P
> 0DwX49bjZ6WL1aqXrqDdmu8ugiaWZYk89nsBo1SGoXMoa65/2YYtHy8fcHADga1gUfH3k/Oo
> 7DyXE9@EdIJzv4/x6LwgmuKU77lU~",
>
> "scope": "myScope",
>
> "token_type": "bearer"
>
> }
>
>
> To view the scope for the access token you can use:
>
> curl -kvv -H "Authorization: Bearer
> /wEBAAUFACBFzw1ZRCTTO@LJWm4QqP0sKQ1UCJSgk38xt4paez9DU0AaZTa0/REruyvfuazo
> gFW/DU/nTFw5SCpFxluBQ/@LPIwC8wZqDy8AlyBRPCm98kiGNoafrUgLKWGitJI/6KGXeCAo
> Iu8pspwP4jYMT25Vp37wGlLnXZ/Em/WDH1nEyeJNDt3hzNPZGDC0dm5VHoRqa3HyMVwWNHEI
> 6bVhiHpRgaV3poGQjV5sDrFJRzUls9@IezBbAfJG4cpdZn50D2Md@sMZUCUGIj9JFe0n0VJV
> JDAz8Omoq6201ix/94raYt2WdlQuTIvcdp@omj9p3G2peJm1rC9FeYlh5@4H1ofJPhOXGz2W
> Iu8BIaQUE79Is8dQ66JGqPstZQcbDP0ke6w~"
> https://idp.site.com/nidp/oauth/nam/userinfo
>
> This will respond with:
>
> {
>
> "myAttribute": "someValue",
>
> "sub": "9c6bb7a6cb118d489bbc9c6bb7a6cb11"
>
> }
>
> To access the app:
>
> curl -k -s -H "Authorization: Bearer
> /wEBAAQEACB0V8b6plNjJR/oCSA2O1ezB9aXAA55aWf4g0RrB1Y8JYCbFiuddFyQ@P4nMhb@
> WBmdaixQc3cKL2p92QiI0054reAYh/ZusfIP5cjILjHA5a1cn8fDIFc9F16tdO/5FNnRD/ve
> abrwcKDa4UF1HBR8wm@4ujLJ64G5qXe7wrf5cdRSZwPcJhO@0@OSLZCQyjczV8KUPTjwkVIZ
> ICc31sKCQaGyOCL4iemiGNawx3JvQJKd2OeRzznWuXZuBVO3AliKMTMF9/KvkF/AGs7i9HwK
> 2ys1KaZ6LYeaRBnlwM9xHTukV1qAqem9z1crGK4wGNdiL8OqGHfNPNVLuLA1MlBQE4v1a4P1
> bk4IVEa1ioGHSMdVFgMuiLNVP739qbHXodjv4gDe15589WS294oGvm6e" -H "Host:
> protectedapp.site.com" https://10.200.200.40/app/ |python -mjson.tool
>
> To refresh an access token:
>
> curl -kvv -X POST -d
> "grant_type=refresh_token&refresh_token=/wEBAAYGACBOkR43BsX5JySkIBSBW6bM
> QIDa1XV2zBeporKdWDkscnFxG7I2HALLEuRw@Ir0CDnB2fubSC8HhNIn19BEEuDOW@IAw4pm
> 15CE37DBEIOnsvgdvxvMeyJHGGU1QWhLI4FTumJQg1/cwYpNxGVC55uzILfX2LdAzz/SSvBi
> 86325Z5LEypQEz0bq91gsnzUmsJtYlbg/kY@S2BY3qLZwMN2D0L1ixk3Nc9jCXPWxExCktTg
> UeL6WwcZ1Dl5a9pM9FmIyDeh4tINvH/0m53Aahf8ojcDhiotSWhP2Hl0tAU/SA6yPFy6HCiJ
> OSlGPgVZjn22g0UqwJXm@akwtVcLb020@6kOmyFVjWf7FS1pp5T1F9VJDfVzstfXv9yfq34@
> 9h5oqogQHZto5t2POOdSEjh2"
> "https://idp.site.com/nidp/oauth/nam/token?client_id=b547049b-4b9f-42f6-
> 99aa-de58f7947c2e&client_secret=zIWrNLtFq1yw7b5J59hOjYbdLzGyS6ZozK2blUdp
> qQ_VIcT-pZ44PJVauKZ4_UbLPzGLf7JRGLGI2LmdFPJniA"
>
>
> --
> Cheers,
> Edward

Hi Edward,
Would you have an example based on authorization code grant type?
Thanks


--
ratclma
------------------------------------------------------------------------
ratclma's Profile: https://forums.netiq.com/member.php?userid=7886
View this thread: https://forums.netiq.com/showthread.php?t=54418

0 Likes
sebastijan1 Absent Member.
Absent Member.

Re: test Oauth with curl


Hi,

My OAuth klnowledge is also limited but when I was playing with it I was
testing authorization grant with Google oauth playground
1) Go to URL https://developers.google.com/oauthplayground/
2) Open OAuth 2.0. Configuration (icon in upper right corner)
3) set following settings:
OAuth flow: Server-Side
OAuth endpoints: Custom
Authorization endpoint: https://<idp>/nidp/oauth/nam/authz
Token endpoint: https://<idp>/nidp/oauth/nam/token
Access token location: Authorization header w/ Bearer prefix
OAuth Client ID: <client_id from client config page>
OAuth Client secret: <client_secret from client config page>

4) Close settings
5) On left side manually enter scope, choose Authorize APIs and follow
steps

I hope it will help. There is only one limitation. Your APIs should be
accessible from internet.
And of course there is no curl... But on the other hand you can see
requests and responses on right side of page.

regs s


--
sebastijan
------------------------------------------------------------------------
sebastijan's Profile: https://forums.netiq.com/member.php?userid=271
View this thread: https://forums.netiq.com/showthread.php?t=54418

0 Likes
Knowledge Partner Knowledge Partner
Knowledge Partner

Re: test Oauth with curl

On 1/24/2017 8:44 PM, ratclma wrote:
>


> Hi Edward,
> Would you have an example based on authorization code grant type?
> Thanks
>
>


I think there's something broken here. When i post this to the authz
endpoint:

curl -kvv -X POST -d "username=user&password=badpassword"
"https://idp.site.com/nidp/oauth/nam/authz?response_type=code&scope=myScope&client_id=18560a88-cfcf-4798-92a8-e0b4326866dc&redirect_uri=https://client.example.org/callback&state=1234"

but from here I'd expect a authorization_code back from the server. This
authorization_code is then sent to the client which requests a access
token and requests the scope info.

I'll see what I can find out about the above though.

--
Cheers,
Edward
0 Likes
Knowledge Partner Knowledge Partner
Knowledge Partner

Re: test Oauth with curl

On 1/26/2017 8:55 PM, Edward van der Maas wrote:
> On 1/24/2017 8:44 PM, ratclma wrote:
>>

>
>> Hi Edward,
>> Would you have an example based on authorization code grant type?
>> Thanks
>>
>>

>
> I think there's something broken here. When i post this to the authz
> endpoint:
>
> curl -kvv -X POST -d "username=user&password=badpassword"
> "https://idp.site.com/nidp/oauth/nam/authz?response_type=code&scope=myScope&client_id=18560a88-cfcf-4798-92a8-e0b4326866dc&redirect_uri=https://client.example.org/callback&state=1234"
>
>
> but from here I'd expect a authorization_code back from the server. This
> authorization_code is then sent to the client which requests a access
> token and requests the scope info.
>
> I'll see what I can find out about the above though.
>


Sorry, that was a incomplete answer there. I forgot to add that the curl
command above triggers a redirect to a login URL which is something I'm
not sure is expected.

--
Cheers,
Edward
0 Likes
sebastijan1 Absent Member.
Absent Member.

Re: test Oauth with curl

edmaa;2449569 wrote:
On 1/26/2017 8:55 PM, Edward van der Maas wrote:
Sorry, that was a incomplete answer there. I forgot to add that the curl
command above triggers a redirect to a login URL which is something I'm
not sure is expected.


As far as I can understand OAuth, authorization code (response_type=code) and implicit (response_type=roken) grant type always redirect to login URL.
After successful authentication user should be redirected back to redirect_uri, which should be client application.

regs s
0 Likes
Knowledge Partner Knowledge Partner
Knowledge Partner

Re: test Oauth with curl

On 1/27/2017 12:36 AM, sebastijan wrote:
>
> edmaa;2449569 Wrote:
>> On 1/26/2017 8:55 PM, Edward van der Maas wrote:
>> Sorry, that was a incomplete answer there. I forgot to add that the curl
>> command above triggers a redirect to a login URL which is something I'm
>> not sure is expected.
>>

>
> As far as I can understand OAuth, authorization code
> (response_type=code) and implicit (response_type=roken) grant type
> always redirect to login URL.
> After successful authentication user should be redirected back to
> redirect_uri, which should be client application.
>
> regs s
>
>


If i use the implicit flow and post the credentials at the same time it
works fine.



--
Cheers,
Edward
0 Likes
sebastijan1 Absent Member.
Absent Member.

Re: test Oauth with curl

edmaa;2449647 wrote:
On 1/27/2017 12:36 AM, sebastijan wrote:
>
> edmaa;2449569 Wrote:
>> On 1/26/2017 8:55 PM, Edward van der Maas wrote:
>> Sorry, that was a incomplete answer there. I forgot to add that the curl
>> command above triggers a redirect to a login URL which is something I'm
>> not sure is expected.
>>

>
> As far as I can understand OAuth, authorization code
> (response_type=code) and implicit (response_type=roken) grant type
> always redirect to login URL.
> After successful authentication user should be redirected back to
> redirect_uri, which should be client application.
>
> regs s
>
>


If i use the implicit flow and post the credentials at the same time it
works fine.


Interesting, with my NAM I get redirected to login window (/nidp/app/login).
Command:

curl -kvv -X POST -d "username=user&password=badpassword" "https://idp.site.com/nidp/oauth/nam/authz?response_type=token&scope=myScope&client_id=5b9ecc87-f673-4fc6-ad58-48d722ccbc56&redirect_uri=https://client.example.org/callback&state=1234"


returns:

< HTTP/1.1 302 Found
< Date: Fri, 27 Jan 2017 07:26:45 GMT
< Strict-Transport-Security: max-age=31536000;includeSubDomains
< X-FRAME-OPTIONS: SAMEORIGIN
< Strict-Transport-Security: max-age=31536000
< X-Content-Type-Options: nosniff
< X-XSS-Protection: 1; mode=block
< Set-Cookie: JSESSIONID=7B85AD728C7431BBCFD5574B0C86012E; Path=/nidp/; Secure; HttpOnly
< Cache-Control: no-cache, no-store, no-transform
< Location: https://idp.site.com/nidp//app/login?target=https%3A%2F%2Fidp.site.com%2Fnidp%2Foauth%2Fnam%2Fauthz%3Fpassword%3Dbadpassword%26username%3Duser
< Access-Control-Allow-Methods: GET, POST, DELETE, PUT, OPTIONS
< Access-Control-Allow-Headers: Origin, X-Requested-With, Content-Type, Accept, Authorization
< Content-Length: 0
< X-Mag: C086B6219F22D8C1;749fd1db;164101;usrLkup->0;usrBase->0;getPRBefFind->0;getPRBefFind->0;PRAfterFind->0;nidp;publicURL->0;_nidp_;RwDis;FP2->0;FP4->7;
< Via: 1.1 idp.site.com (Access Gateway-ag-C086B6219F22D8C1-164101)


regs s
0 Likes
The opinions expressed above are the personal opinions of the authors, not of Micro Focus. By using this site, you accept the Terms of Use and Rules of Participation. Certain versions of content ("Material") accessible here may contain branding from Hewlett-Packard Company (now HP Inc.) and Hewlett Packard Enterprise Company. As of September 1, 2017, the Material is now offered by Micro Focus, a separately owned and operated company. Any reference to the HP and Hewlett Packard Enterprise/HPE marks is historical in nature, and the HP and Hewlett Packard Enterprise/HPE marks are the property of their respective owners.