# Add and enable Rut Auth capability using scripting API

**URL:** <https://community.sonatype.com/t/add-and-enable-rut-auth-capability-using-scripting-api/657>\
**Category:** Sonatype Nexus Repository\
**Tags:** help, rest, integrations\
**Created:** [October 12, 2018, 11:15am UTC](https://community.sonatype.com/t/add-and-enable-rut-auth-capability-using-scripting-api/657 "2018-10-12T11:15:57Z")\
**Posts on this page:** 1\
**Showing post:** 3

<div class="post-metadata">

**Author:** ![mworthington](https://yyz1.discourse-cdn.com/flex047/user_avatar/community.sonatype.com/mworthington/32/64_2.png) [@mworthington](https://community.sonatype.com/u/mworthington)\
**Post date:** [October 12, 2018, 2:00pm UTC](https://community.sonatype.com/t/add-and-enable-rut-auth-capability-using-scripting-api/657/3 "2018-10-12T14:00:07Z")

</div>

Continuing the discussion from [Advanced Use Cases for the Nexus Repository Manager API](http://community.sonatype.com/t/advanced-use-cases-for-the-nexus-repository-manager-api/80):

In addition to what @rseddon mentioned, you may also need to create and configure a Nexus Capability so that Nexus knows which HTTP header to look at for the authenticated user name.

More about RUT Auth can be found in the docs at [Authentication via Remote User Token](https://help.sonatype.com/repomanager3/security/authentication-via-remote-user-token). And, not directly related, but architecturally the same, this guide provides context around Remote User Token Authentication: [PKI Authentication for Nexus - Sonatype Guides](https://guides.sonatype.com/repo3/technical-guides/pki-auth/)

A sample groovy script to create and configure the capability, which will also automatically enable the realm:

```
import groovy.json.JsonOutput
import org.sonatype.nexus.capability.CapabilityReference
import org.sonatype.nexus.capability.CapabilityType
import org.sonatype.nexus.internal.capability.DefaultCapabilityReference
import org.sonatype.nexus.internal.capability.DefaultCapabilityRegistry

returnValue = JsonOutput.toJson([result : 'Did NOT add Rut Auth'])

def capabilityRegistry = container.lookup(DefaultCapabilityRegistry.class.getName())

//Capability specific values/properties
def capabilityType = CapabilityType.capabilityType("rutauth")
def capabilityProps = ['httpHeader': 'some_auth_header']
def capabilityNotes = 'configured through scripting api'

//check if existing Rut Auth capability exists
DefaultCapabilityReference existing = capabilityRegistry.all.find { CapabilityReference capabilityReference ->
  capabilityReference.context().descriptor().type() == capabilityType
}

//If it doesn't, add it with given values/properties
//This should also enable the rutauth-realm
if (!existing)
{
  log.info('Rut Auth capability created as: {}',
           capabilityRegistry.add(capabilityType, true, capabilityNotes, capabilityProps).toString())

  returnValue = JsonOutput.toJson([result : 'Successfully added Rut Auth!'])
}

return returnValue
```

---

_[View the full topic](https://community.sonatype.com/t/add-and-enable-rut-auth-capability-using-scripting-api/657)._
