# Unable to get IdP with name 'AD\_internal\_hybrid' from cache

**URL:** <https://forum.inductiveautomation.com/t/unable-to-get-idp-with-name-ad-internal-hybrid-from-cache/70959>\
**Category:** Ignition\
**Tags:** perspective\
**Created:** [March 13, 2023, 11:03am UTC](https://forum.inductiveautomation.com/t/unable-to-get-idp-with-name-ad-internal-hybrid-from-cache/70959 "2023-03-13T11:03:12Z")\
**Posts on this page:** 12\
**Page:** 1

<div class="post-metadata">

**Author:** ![Transistor](https://sea1.discourse-cdn.com/inductiveautomation/user_avatar/forum.inductiveautomation.com/transistor/32/3380_2.png) [@Transistor](https://forum.inductiveautomation.com/u/Transistor)\
**Post date:** [March 13, 2023, 11:03am UTC](https://forum.inductiveautomation.com/t/unable-to-get-idp-with-name-ad-internal-hybrid-from-cache/70959/1 "2023-03-13T11:03:13Z")

</div>

Version: 8.1.22.

 ![Unable to get IdP](https://us1.discourse-cdn.com/inductiveautomation/original/3X/8/f/8f01cbad28f8dab2195d2166f1fa69edc6335151.png)

We're picking through the status log errors and have made good progress in weeding out many of them. I've had five occurrances of **Unable to get IdP with name 'AD\_internal\_hybrid' from cache** over the past three days but by various projects. I think the IdP is working OK because login is working correctly on our Perspective applications.

![IdP error log properties](https://us1.discourse-cdn.com/inductiveautomation/original/3X/b/0/b0bbde39133e5299089095f2517499f1efc6ffe9.png)

and the log details - for what they're worth:

> **Log details**
>
> ```auto
> java.util.concurrent.ExecutionException: com.inductiveautomation.ignition.gateway.auth.idp.NotFoundException
> at com.google.common.util.concurrent.AbstractFuture.getDoneValue(AbstractFuture.java:531)
> at com.google.common.util.concurrent.AbstractFuture.get(AbstractFuture.java:492)
> at com.google.common.util.concurrent.AbstractFuture$TrustedFuture.get(AbstractFuture.java:83)
> at com.google.common.util.concurrent.Uninterruptibles.getUninterruptibly(Uninterruptibles.java:196)
> at com.google.common.cache.LocalCache$Segment.getAndRecordStats(LocalCache.java:2312)
> at com.google.common.cache.LocalCache$Segment.loadSync(LocalCache.java:2278)
> at com.google.common.cache.LocalCache$Segment.lockedGetOrLoad(LocalCache.java:2154)
> at com.google.common.cache.LocalCache$Segment.get(LocalCache.java:2044)
> at com.google.common.cache.LocalCache.get(LocalCache.java:3952)
> at com.google.common.cache.LocalCache.getOrLoad(LocalCache.java:3974)
> at com.google.common.cache.LocalCache$LocalLoadingCache.get(LocalCache.java:4958)
> at com.inductiveautomation.ignition.gateway.auth.idp.IdpAdapterManagerImpl.getIdpAdapter(IdpAdapterManagerImpl.java:704)
> at java.base/java.util.Optional.flatMap(Unknown Source)
> at com.inductiveautomation.ignition.gateway.auth.idp.WebAuthSessionImpl.startupInternal(WebAuthSessionImpl.java:121)
> at com.inductiveautomation.ignition.gateway.auth.idp.WebAuthSessionImpl.mdc(WebAuthSessionImpl.java:102)
> at com.inductiveautomation.ignition.gateway.auth.idp.WebAuthSessionImpl.startup(WebAuthSessionImpl.java:128)
> at com.inductiveautomation.perspective.gateway.session.SecuredPerspectiveProjectSession.onStartupInternal(SecuredPerspectiveProjectSession.java:604)
> at com.inductiveautomation.perspective.gateway.session.SessionKernelWrapper.onStartup(SessionKernelWrapper.java:145)
> at com.inductiveautomation.ignition.common.lifecycle.AbstractLifecycle.startup(AbstractLifecycle.java:18)
> at com.inductiveautomation.ignition.common.util.ExecutionQueue$FragileRunnableFuture.getValue(ExecutionQueue.java:286)
> at com.inductiveautomation.ignition.common.util.ExecutionQueue$FragileRunnableFuture.getValue(ExecutionQueue.java:275)
> at com.inductiveautomation.ignition.common.util.ExecutionQueue$FragileCompletableFuture.run(ExecutionQueue.java:266)
> at com.inductiveautomation.ignition.common.util.TimedRunnable.run(TimedRunnable.java:21)
> at com.inductiveautomation.ignition.common.util.ExecutionQueue$PollAndExecute.run(ExecutionQueue.java:239)
> at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
> at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
> at java.base/java.lang.Thread.run(Unknown Source)
> Caused by: com.inductiveautomation.ignition.gateway.auth.idp.NotFoundException: null
> at java.base/java.util.Optional.orElseThrow(Unknown Source)
> at com.inductiveautomation.ignition.gateway.auth.idp.IdpAdapterManagerImpl$IdpAdapterCacheLoader.load(IdpAdapterManagerImpl.java:153)
> at com.inductiveautomation.ignition.gateway.auth.idp.IdpAdapterManagerImpl$IdpAdapterCacheLoader.load(IdpAdapterManagerImpl.java:147)
> at com.google.common.cache.LocalCache$LoadingValueReference.loadFuture(LocalCache.java:3528)
> at com.google.common.cache.LocalCache$Segment.loadSync(LocalCache.java:2277)
> ... 21 common frames omitted
> 
> ```

Any suggestions about what is causing this? Is it an Active Directory timeout external to Ignition?

---

<div class="post-metadata">

**Author:** ![paul-griffith](https://sea1.discourse-cdn.com/inductiveautomation/user_avatar/forum.inductiveautomation.com/paul-griffith/32/37249_2.png) [@paul-griffith](https://forum.inductiveautomation.com/u/paul-griffith)\
**Post date:** [March 13, 2023, 4:12pm UTC](https://forum.inductiveautomation.com/t/unable-to-get-idp-with-name-ad-internal-hybrid-from-cache/70959/2 "2023-03-13T16:12:09Z")

</div>

If you look in the internal database, specifically the `IDP_ADAPTERS` table, do you see a record with the called out name? There's not a lot of pieces that could fail to cause this error; it's basically: retrieve all the records, put them into a `Map<String, IdpAdapter>`, then retrieve by name. That retrieval by name is what's failing.

---

<div class="post-metadata">

**Author:** ![Transistor](https://sea1.discourse-cdn.com/inductiveautomation/user_avatar/forum.inductiveautomation.com/transistor/32/3380_2.png) [@Transistor](https://forum.inductiveautomation.com/u/Transistor)\
**Post date:** [March 13, 2023, 7:33pm UTC](https://forum.inductiveautomation.com/t/unable-to-get-idp-with-name-ad-internal-hybrid-from-cache/70959/3 "2023-03-13T19:33:18Z")

</div>

Thanks, Paul. Can you remind me how to access the internal database? (I think I looked into it a couple of years ago but have no idea how.)

---

<div class="post-metadata">

**Author:** ![paul-griffith](https://sea1.discourse-cdn.com/inductiveautomation/user_avatar/forum.inductiveautomation.com/paul-griffith/32/37249_2.png) [@paul-griffith](https://forum.inductiveautomation.com/u/paul-griffith)\
**Post date:** [March 13, 2023, 7:44pm UTC](https://forum.inductiveautomation.com/t/unable-to-get-idp-with-name-ad-internal-hybrid-from-cache/70959/4 "2023-03-13T19:44:00Z")

</div>

From any page in the status section, change the trailing url the "sys.internaldb". Or use the Konami code. Or use Kindling, or any other SQLite browser, on a GWBK.

---

<div class="post-metadata">

**Author:** ![Transistor](https://sea1.discourse-cdn.com/inductiveautomation/user_avatar/forum.inductiveautomation.com/transistor/32/3380_2.png) [@Transistor](https://forum.inductiveautomation.com/u/Transistor)\
**Post date:** [March 13, 2023, 8:00pm UTC](https://forum.inductiveautomation.com/t/unable-to-get-idp-with-name-ad-internal-hybrid-from-cache/70959/5 "2023-03-13T20:00:47Z")

</div>

Making progress ...

 ![IDP_ADAPTORS](https://us1.discourse-cdn.com/inductiveautomation/original/3X/3/6/3647a0645acdac4bce44cfe182375ba09024e812.png)

What next? (Thanks for the hand-holding.)

---

<div class="post-metadata">

**Author:** ![paul-griffith](https://sea1.discourse-cdn.com/inductiveautomation/user_avatar/forum.inductiveautomation.com/paul-griffith/32/37249_2.png) [@paul-griffith](https://forum.inductiveautomation.com/u/paul-griffith)\
**Post date:** [March 13, 2023, 8:28pm UTC](https://forum.inductiveautomation.com/t/unable-to-get-idp-with-name-ad-internal-hybrid-from-cache/70959/6 "2023-03-13T20:28:08Z")

</div>

Hmm, the binary data should just be a JSON strings, I'm not sure how best to coerce it out. Probably have to Google a SQLite conversion function so that the IDB page doesn't think it's binary data anymore.

---

<div class="post-metadata">

**Author:** ![Transistor](https://sea1.discourse-cdn.com/inductiveautomation/user_avatar/forum.inductiveautomation.com/transistor/32/3380_2.png) [@Transistor](https://forum.inductiveautomation.com/u/Transistor)\
**Post date:** [March 13, 2023, 9:31pm UTC](https://forum.inductiveautomation.com/t/unable-to-get-idp-with-name-ad-internal-hybrid-from-cache/70959/7 "2023-03-13T21:31:06Z")

</div>

Ha!  
`SELECT idp_adapters_id, json_extract(config, '$') FROM idp_adapters`

returns four items. The one I think is relevant is #3:

> **IdP\_Adapters\_Id JSON**
>
> ```auto
> {
> "name": "IdP_AD_internal_hybrid",
> "description": "Automatically generated Ignition Identity Provider which uses the User Source Profile named \"AD internal hybrid\".",
> "authStrategy": {
> "type": "ignition",
> "config": {
> "version": 1,
> "userSource": "AD internal hybrid",
> "authMethods": ["username-and-password"],
> "defaultAuthMethod": "username-and-password",
> "badgeSecret": false,
> "sessionInactivityTimeout": 30,
> "sessionExp": 0,
> "rememberMeExp": 0
> }
> },
> "userAttributeMapper": {
> "id": {
> "type": "direct",
> "config": {
> "attributePath": "sub"
> }
> },
> "userName": {
> "type": "direct",
> "config": {
> "attributePath": "preferred_username"
> }
> },
> "firstName": {
> "type": "direct",
> "config": {
> "attributePath": "given_name"
> }
> },
> "lastName": {
> "type": "direct",
> "config": {
> "attributePath": "family_name"
> }
> },
> "email": {
> "type": "direct",
> "config": {
> "attributePath": "email"
> }
> },
> "roles": {
> "type": "direct",
> "config": {
> "attributePath": "roles"
> }
> }
> },
> "directSecurityLevelPolicies": {
> "id": {},
> "username": {}
> },
> "derivedSecurityLevelPolicies": []
> }
> 
> ```

I don't see any problem there? Anyone?

---

<div class="post-metadata">

**Author:** ![paul-griffith](https://sea1.discourse-cdn.com/inductiveautomation/user_avatar/forum.inductiveautomation.com/paul-griffith/32/37249_2.png) [@paul-griffith](https://forum.inductiveautomation.com/u/paul-griffith)\
**Post date:** [March 13, 2023, 9:39pm UTC](https://forum.inductiveautomation.com/t/unable-to-get-idp-with-name-ad-internal-hybrid-from-cache/70959/8 "2023-03-13T21:39:59Z")

</div>

> [@Transistor](#):
>
> `IdP_AD_internal_hybrid`

Well, that's not the same as `AD_internal_hybrid`, which is what's apparently being requested...

I don't see anything suggesting there's any automatic addition of a prefix or anything.

---

<div class="post-metadata">

**Author:** ![Transistor](https://sea1.discourse-cdn.com/inductiveautomation/user_avatar/forum.inductiveautomation.com/transistor/32/3380_2.png) [@Transistor](https://forum.inductiveautomation.com/u/Transistor)\
**Post date:** [March 13, 2023, 9:58pm UTC](https://forum.inductiveautomation.com/t/unable-to-get-idp-with-name-ad-internal-hybrid-from-cache/70959/9 "2023-03-13T21:58:29Z")

</div>

Well spotted. The list is:

- temp
- IdP\_AD\_internal\_hybrid
- opcua\_module
- default

Meanwhile Config | SECURITY | Identity Providers shows,

 ![Identity Providers](https://us1.discourse-cdn.com/inductiveautomation/original/3X/6/8/6808a06b82aaa0bf870f300d58d3d903da4523e0.png)

---

<div class="post-metadata">

**Author:** ![paul-griffith](https://sea1.discourse-cdn.com/inductiveautomation/user_avatar/forum.inductiveautomation.com/paul-griffith/32/37249_2.png) [@paul-griffith](https://forum.inductiveautomation.com/u/paul-griffith)\
**Post date:** [March 13, 2023, 10:11pm UTC](https://forum.inductiveautomation.com/t/unable-to-get-idp-with-name-ad-internal-hybrid-from-cache/70959/10 "2023-03-13T22:11:44Z")

</div>

Check the project's properties? Does it have a stale reference? Is the project IdP configured in Project Properties -\> General, or Project Properties -\> Perspective -\> General? The latter path is deprecated for some legacy reasons, and once you make a change in the former, the latter should be automatically hidden.

---

<div class="post-metadata">

**Author:** ![Transistor](https://sea1.discourse-cdn.com/inductiveautomation/user_avatar/forum.inductiveautomation.com/transistor/32/3380_2.png) [@Transistor](https://forum.inductiveautomation.com/u/Transistor)\
**Post date:** [March 13, 2023, 10:31pm UTC](https://forum.inductiveautomation.com/t/unable-to-get-idp-with-name-ad-internal-hybrid-from-cache/70959/11 "2023-03-13T22:31:34Z")

</div>

The project IdP is configured in both Project Properties | General and in Project Properties | Perspective | General. Changing the former to or default and applying the change didn't hide the latter.

I'll investigate more tomorrow. Thank you again for the follow through.

---

<div class="post-metadata">

**Author:** ![Transistor](https://sea1.discourse-cdn.com/inductiveautomation/user_avatar/forum.inductiveautomation.com/transistor/32/3380_2.png) [@Transistor](https://forum.inductiveautomation.com/u/Transistor)\
**Post date:** [March 14, 2023, 6:03pm UTC](https://forum.inductiveautomation.com/t/unable-to-get-idp-with-name-ad-internal-hybrid-from-cache/70959/12 "2023-03-14T18:03:37Z")

</div>

Duh! And save the project to update the gateway.  
I think we may have solved the problem.
