2

Web サービス呼び出しを介して ServiceNow に登録されたユーザーを認証する次のコードがあります。

HttpTransportProperties.Authenticator basicAuthentication = new   HttpTransportProperties.Authenticator();
           basicAuthentication.setUsername("username");
           basicAuthentication.setPassword("password");
options.setProperty(
                    org.apache.axis2.transport.http.HTTPConstants.AUTHENTICATE,
                    basicAuthentication);
options.setProperty(
                    org.apache.axis2.transport.http.HTTPConstants.CHUNKED,
                    Boolean.FALSE);

しかし、それはユーザーを認証しません。代わりに、「新しいレコードを作成する権限がありません」という例外が発生します。service now コミュニティ ページでも、これに対する解決策を見つけることができませんでした。コードまたは使用している ServiceNow インスタンスに問題がある可能性はありますか? どんな助けでも大歓迎です。

ありがとう

注: 上記のコードに加えて、ここには記載されていないインシデントを作成するコードもあります。

4

2 に答える 2

1

表示されているメッセージは、認証が失敗したことを示しているのではなく、認証しようとしているユーザーに、実行しようとしている操作を実行するための十分な権限がないことを示しているだけです。

解決策は、使用しているダイレクト Web サービスをホストするインスタンスの構成によって異なります。この wiki 記事では、不十分なアクセスの潜在的な原因をすべて概説しています。

ユーザーがインタラクティブに (UI で) レコードを作成できる場合、SOAP アクティビティを許可する特別な SOAP ロールがユーザーに欠けていると思います。参照された wiki から: 5 つの Web サービス ユーザー ロール

5 Web サービス ユーザー ロール

Web サービスで基本認証が必要な場合、glide.soap.strict_security プロパティを有効にすると、認証された SOAP ユーザーがコンテキスト セキュリティで検証され、ユーザーに割り当てられたロールで SOAP アクションが検証されます。インバウンド SOAP リクエストを保護するために、次のロールを使用できます。

ロール テーブルはこちらにあります。ServiceNow インスタンスで自分自身にsoapロールを割り当てれば、うまくいくはずです。

于 2014-05-29T17:05:25.667 に答える
0

Service Now コミュニティでも、この質問に対する答えが見つかりませんでした。最終的に、別のインスタンスで作業を開始する必要がありました。したがって、これは現在のサービスの問題だと思います。これは、この問題に遭遇した人にとって役に立ちます。

于 2014-07-15T10:12:32.763 に答える