# Anonymous client write access

**URL:** <https://forum.inductiveautomation.com/t/anonymous-client-write-access/112668>\
**Category:** Ignition\
**Tags:** ignition83\
**Created:** [December 7, 2025, 3:27am UTC](https://forum.inductiveautomation.com/t/anonymous-client-write-access/112668 "2025-12-07T03:27:05Z")\
**Posts on this page:** 9\
**Page:** 1

<div class="post-metadata">

**Author:** ![tim3](https://sea1.discourse-cdn.com/inductiveautomation/user_avatar/forum.inductiveautomation.com/tim3/32/81945_2.png) [@tim3](https://forum.inductiveautomation.com/u/tim3)\
**Post date:** [December 7, 2025, 3:27am UTC](https://forum.inductiveautomation.com/t/anonymous-client-write-access/112668/1 "2025-12-07T03:27:05Z")

</div>

Need python client (asyncua ) to be able to connect anonymously and write tags for development env. Have setup tag Write security Public.

Can read tag, but attempts to write tag produce - “BadUserAccessDenied: User does not have permission to perform the requested operation”

What am I missing?

---

<div class="post-metadata">

**Author:** ![Kevin.Herron](https://sea1.discourse-cdn.com/inductiveautomation/user_avatar/forum.inductiveautomation.com/kevin.herron/32/7259_2.png) [@Kevin.Herron](https://forum.inductiveautomation.com/u/Kevin.Herron)\
**Post date:** [December 7, 2025, 3:28am UTC](https://forum.inductiveautomation.com/t/anonymous-client-write-access/112668/2 "2025-12-07T03:28:06Z")

</div>

If you don't set up any permissions at all it should just work by default.

---

<div class="post-metadata">

**Author:** ![tim3](https://sea1.discourse-cdn.com/inductiveautomation/user_avatar/forum.inductiveautomation.com/tim3/32/81945_2.png) [@tim3](https://forum.inductiveautomation.com/u/tim3)\
**Post date:** [December 7, 2025, 3:38am UTC](https://forum.inductiveautomation.com/t/anonymous-client-write-access/112668/3 "2025-12-07T03:38:27Z")

</div>

I found OPC UA Server Settings → Permissions, where write was disabled for anonymous, that fixed it.

---

<div class="post-metadata">

**Author:** ![Kevin.Herron](https://sea1.discourse-cdn.com/inductiveautomation/user_avatar/forum.inductiveautomation.com/kevin.herron/32/7259_2.png) [@Kevin.Herron](https://forum.inductiveautomation.com/u/Kevin.Herron)\
**Post date:** [December 7, 2025, 3:43am UTC](https://forum.inductiveautomation.com/t/anonymous-client-write-access/112668/4 "2025-12-07T03:43:42Z")

</div>

Ah, are you using Ignition 8.3 then?

---

<div class="post-metadata">

**Author:** ![tim3](https://sea1.discourse-cdn.com/inductiveautomation/user_avatar/forum.inductiveautomation.com/tim3/32/81945_2.png) [@tim3](https://forum.inductiveautomation.com/u/tim3)\
**Post date:** [December 7, 2025, 4:06am UTC](https://forum.inductiveautomation.com/t/anonymous-client-write-access/112668/6 "2025-12-07T04:06:21Z")

</div>

Yes

---

<div class="post-metadata">

**Author:** ![Kevin.Herron](https://sea1.discourse-cdn.com/inductiveautomation/user_avatar/forum.inductiveautomation.com/kevin.herron/32/7259_2.png) [@Kevin.Herron](https://forum.inductiveautomation.com/u/Kevin.Herron)\
**Post date:** [December 7, 2025, 4:12am UTC](https://forum.inductiveautomation.com/t/anonymous-client-write-access/112668/7 "2025-12-07T04:12:56Z")

</div>

Ok, yep, you found the right solution then.

Previously nothing would have been required.

It can get a little confusing if you start configuring Ignition Tag permissions because the OPC UA server uses a different authentication profile by default, though I'm not sure it actually matters in this case.

---

<div class="post-metadata">

**Author:** ![tim3](https://sea1.discourse-cdn.com/inductiveautomation/user_avatar/forum.inductiveautomation.com/tim3/32/81945_2.png) [@tim3](https://forum.inductiveautomation.com/u/tim3)\
**Post date:** [December 7, 2025, 4:38am UTC](https://forum.inductiveautomation.com/t/anonymous-client-write-access/112668/8 "2025-12-07T04:38:16Z")

</div>

Yep, thanks for the quick response.

I'm evaluating some Ignition features for a client. We would like to perform supervisory control functions using python against the Ignition OPCUA server, which will provide access our ModBUS (and potentially CAN) devices. Might run it all on a Revolution Pi or some such.

---

<div class="post-metadata">

**Author:** ![Kevin.Herron](https://sea1.discourse-cdn.com/inductiveautomation/user_avatar/forum.inductiveautomation.com/kevin.herron/32/7259_2.png) [@Kevin.Herron](https://forum.inductiveautomation.com/u/Kevin.Herron)\
**Post date:** [December 7, 2025, 2:59pm UTC](https://forum.inductiveautomation.com/t/anonymous-client-write-access/112668/9 "2025-12-07T14:59:33Z")

</div>

The other setting you may end up finding useful is Expose Tag Providers:

 ![image](https://us1.discourse-cdn.com/inductiveautomation/original/3X/6/a/6ad8599e1cd6d087863236a9456a9e294209ca6e.png)

By default the server just exposes configured devices, some of which will have browseable tags by default (e.g. Logix), some won't (Modbus) - depends on the protocol.

Exposed Tags exposes the _Ignition Tags_ that you've created in each Ignition Tag Provider. Many of these might be OPC tags from Ignition's server or other OPC servers you've connected, but it also includes all the memory tags, expression tags, UDTs, folders, etc... that you've built out in your Ignition tag model.

Access the devices directly for a Kepware-ish experience, though that's not an experience we really focus on making great. Access the tags via exposed tags if you want a way to integrate other systems that can act as an OPC UA client with Ignition's tags.

---

<div class="post-metadata">

**Author:** ![tim3](https://sea1.discourse-cdn.com/inductiveautomation/user_avatar/forum.inductiveautomation.com/tim3/32/81945_2.png) [@tim3](https://forum.inductiveautomation.com/u/tim3)\
**Post date:** [December 8, 2025, 1:42am UTC](https://forum.inductiveautomation.com/t/anonymous-client-write-access/112668/10 "2025-12-08T01:42:30Z")

</div>

Yeah, I get control isn't Ignition's thing. But for some supervisory use cases like energy management, might be just the ticket. Throw out the cumbersome PLC and program with Python against tag namespace to get the job done.

I just finished some benchmarking with local simulated ModBUS device mapped into Ignition tags. By cranking up the tag group polling rate I'm seeing nice roundtrip write/update times averaging 20ms. I know java GC, networking etc. will push this up, but looks good for our needs.
